gpt4 book ai didi

javascript - 风 sails +布伦特里 : Unable to send the transactions details to client

转载 作者:行者123 更新时间:2023-11-29 21:32:40 27 4
gpt4 key购买 nike

我正在使用 Sails JSBraintree 开发应用程序。我正在尝试发送客户所做的所有过去的交易详细信息。

这是我的 getTransaction 操作

getTransaction: function(req, res) {
var customerId = req.param('customerId');
var gateway = setUpGateway();
var stream = gateway.transaction.search(function(search) {
search.customerId().is(customerId);
}, function(err, response) {
if (err) {
return res.serverError(err);
}

res.send(response);
});
},

但问题是,如果我直接发送从 braintree 服务器获得的响应,它会抛出 循环依赖错误。所以,为了克服这个错误,我只从这样的响应中获取我需要的那些细节

getTransaction: function(req, res) {
var customerId = req.param('customerId');
var gateway = setUpGateway();
var stream = gateway.transaction.search(function(search) {
search.customerId().is(customerId);
}, function(err, response) {
if (err) {
return res.serverError(err);
}

var transactions = [];
response.each(function(err, transaction) {
var temp = [];

temp.push(transaction.id);
temp.push(transaction.amount);
temp.push(transaction.createdAt);
transactions.push(temp);
});

res.send(transactions);
});
},

但是这里 .each 函数是异步执行的,因此 res.send 返回空数组。那么我应该怎么做才能将用户进行的所有交易都退回呢?

最佳答案

完全披露:我在 Braintree 工作。如果您有任何其他问题,请随时联系我们的support团队。

迭代器异步执行是正确的。你应该使用 Node 的流语义来处理请求

getTransaction: function(req, res) {
var customerId = req.param('customerId');
var gateway = setUpGateway();
var transactions = [];

var stream = gateway.transaction.search(function(search) {
search.customerId().is(customerId);
});

stream.on('data', function (transaction) {
transactions.push(transaction);
});

stream.on('end', function () {
res.send(transactions);
});
},

这将等到所有交易都已处理后再发送结果。

This page提供有关使用我们的 Node 客户端库和 Node 的 Stream API 进行搜索的更多信息。

关于javascript - 风 sails +布伦特里 : Unable to send the transactions details to client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35777318/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com