Javascript 帆+;Braintree:无法将事务详细信息发送到客户端
我正在使用Javascript 帆+;Braintree:无法将事务详细信息发送到客户端,javascript,node.js,sails.js,braintree,Javascript,Node.js,Sails.js,Braintree,我正在使用sailsjs和Braintree开发一个应用程序。我正在尝试发送客户所做的所有过去交易的详细信息 这是我的getTransaction操作 getTransaction: function(req, res) { var customerId = req.param('customerId'); var gateway = setUpGateway(); var stream = gateway.transaction.search(function(sear
sailsjs
和Braintree
开发一个应用程序。我正在尝试发送客户所做的所有过去交易的详细信息
这是我的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工作。如果您有任何进一步的问题,请随时与我们的团队联系
迭代器异步执行是正确的。您应该使用节点的流语义来处理请求
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);
});
},
这将等待所有事务处理完毕后再发送结果
提供有关使用我们的节点客户端库和节点的流API进行搜索的更多信息