我正在尝试所有花哨的 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);}
但这没有帮助。
有人能告诉我如何正确地将某些内容流式传输到响应吗?
或者是使用“数据”和“结束”事件手动泵送数据的唯一解决方案?