Nodejs与braintreestream?

我正在尝试构build一个交易的API路线,我想从braintree服务器获取交易详情。

我的应用程序已设置,以便braintree customerId()与我的应用程序用户的ID相同。 所以下面我searchlogin的特定用户的所有交易。

含义req.user.id将始终等于位于braintree服务器上的customerId()

 app.get('/project', function(req, res) { if(req.user) { // Finds all transactions for a particular customer var stream = gateway.transaction.search(function (search) { search.customerId().is(req.user.id); }); console.log(stream); //res.send(stream); } }); 

我想返回细节,但stream如下所示。 那么显然这让我觉得有一种处理节点stream的方法呢?

我已经看到readable-stream东西,我不知道这是我需要处理这个stream对象。

我的问题是如何处理stream对象返回事务的细节?

 { _readableState: { highWaterMark: 16384, buffer: [], length: 0, pipes: null, pipesCount: 0, flowing: false, ended: false, endEmitted: false, reading: false, calledRead: false, sync: true, needReadable: false, emittedReadable: false, readableListening: false, objectMode: true, defaultEncoding: 'utf8', ranOut: false, awaitDrain: 0, readingMore: false, decoder: null, encoding: null }, readable: true, domain: null, _events: {}, _maxListeners: 10, searchResponse: { stream: [Circular], success: true }, currentItem: 0, currentOffset: 0, bufferedResults: [] } 

这返回了交易数据。 我将继续研究节点stream,并且愿意把它做得更好,但是到现在为止,它至less会返回数据。

 stream.on("data", function (data) { res.json(data); }); 

这给了我一个错误,虽然Error: Can't set headers after they are sent.

我认为stream.pipe(水库)应该工作。

你得到这个“无法设置标题发送后”错误的原因是因为stream的数据事件多次发射,所以你试图调用res.json多次为同一个请求。