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

标签 node.js mongodb express

我正在玩弄所有花哨的 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) 对 Mongodb 执行 find() 查询并返回光标

这会导致错误:

TypeError: first argument must be a string or Buffer

根据mongodb driver doc , 我试图将此转换器传递给 stream():

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

但这无济于事。

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

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

最佳答案

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

cursor.stream().pipe(JSONStream.stringify()).pipe(res);

关于node.js - 从 mongodb 游标流式传输到 node.js 中的 Express 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20058614/

相关文章:

javascript - 如何发布同时具有 commonjs 和 es6 版本的 NPM 模块?

node.js - mongodb中的json格式错误

node.js - 如何强制node.js pm2基于ipv4运行

node.js - 如何在 mongoose 中使用 Express 填充的情况下不应用?

node.js - 从子文件夹提供 Express.JS 应用程序

javascript - Webpacking jQuery 和自定义文件 : jQuery is undefined

MongoDB:如何找到已安装 MongoDB 的确切版本

MongoDB mapreduce 缺失数据,返回 'null'

javascript - Express 和 Node JS : Accessing response parameters from Multipart form POST

javascript - 本地主机无法与 Node js一起使用