从 mongodb 游标流式传输到 Node.js 中的 Express 响应

2023-12-01

我正在尝试所有花哨的 node.js/mongodb/express 平台,并偶然发现了一个问题:

app.get('/tag/:tag', function(req, res){
  var tag=req.params.tag;
  console.log('got tag ' + tag + '.');
  catalog.byTag(tag,function(err,cursor) {
     if(err) {
       console.dir(err);
       res.end(err);
     } else {
       res.writeHead(200, { 'Content-Type': 'application/json'});

       //this crashes
       cursor.stream().pipe(res);

     }
  });
});

正如您可能猜到的那样,catalog.byTag(tag, callback) does a find()查询 Mongodb 并返回游标

这会导致错误:

TypeError: first argument must be a string or Buffer

根据mongodb 驱动程序文档, 我试图将这个转换器传递给stream():

function(obj) {return JSON.stringify(obj);}

但这没有帮助。

有人能告诉我如何正确地将某些内容流式传输到响应吗?

或者是使用“数据”和“结束”事件手动泵送数据的唯一解决方案?


结合使用游标流JSONStream将其通过管道传输到您的响应对象。

cursor.stream().pipe(JSONStream.stringify()).pipe(res);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 mongodb 游标流式传输到 Node.js 中的 Express 响应 的相关文章

随机推荐