Nodejs流与大脑树



我正在尝试为事务构建一个api路由,我想从braintree服务器获取事务的详细信息。

我的应用程序设置为使脑树customerId()与应用程序用户的ID相同。因此,下面我搜索特定用户登录的所有交易

意味着req.user.id将始终等于位于脑树服务器上的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);
  }
});

我想返回详细信息,但流如下所示。很明显,这让我认为有某种方法可以处理节点流?

我见过类似readable-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.on("data", function (data) {
  res.json(data);
});

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

我认为stream.pipe(res)应该可以工作。

您收到"发送后无法设置标头"错误的原因是,流的"数据"事件已发出多次,因此您试图为同一请求多次调用res.json。

相关内容

  • 没有找到相关文章