使用nodejs和express,我想使用JSON返回一个或多个对象(数组)。在下面的代码中,我一次输出一个JSON对象。它可以工作,但这并不完全是我想要的。生成的响应不是有效的JSON响应,因为我有许多对象。
我很清楚,我可以简单地将所有对象添加到一个数组中,然后在res.end中返回该特定的数组。然而,我担心这可能会变得非常繁重,需要大量的处理和内存。
使用nodejs实现这一点的正确方法是什么?调用query.each是正确的方法吗?
app.get('/users/:email/messages/unread', function(req, res, next) {
var query = MessageInfo
.find({ $and: [ { 'email': req.params.email }, { 'hasBeenRead': false } ] });
res.writeHead(200, { 'Content-Type': 'application/json' });
query.each(function(err, msg) {
if (msg) {
res.write(JSON.stringify({ msgId: msg.fileName }));
} else {
res.end();
}
});
});
发布于 2012-11-22 19:21:58
发布于 2012-01-18 22:46:35
我不知道这是否真的有什么不同,但您可以这样做,而不是迭代查询游标:
query.exec(function (err, results){
if (err) res.writeHead(500, err.message)
else if (!results.length) res.writeHead(404);
else {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.write(JSON.stringify(results.map(function (msg){ return {msgId: msg.fileName}; })));
}
res.end();
});
https://stackoverflow.com/questions/8905613
复制相似问题