Как вернуть сложный JSON-ответ с помощью Node.js?

Используя 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();
        }
    });
});
81
задан Uwe Keim 25 April 2014 в 12:14
поделиться