1. ホーム
  2. json

[解決済み] Node.jsで複雑なJSONレスポンスを返すには?

2023-07-22 14:41:33

質問

nodejsとexpressを使用して、1つまたは複数のオブジェクト(配列)をJSONで返したいです。以下のコードでは、一度に1つの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();
        }
    });
});

どのように解決するのですか?

express 3では、res.json({foo:bar})を直接使用することができます。

res.json({ msgId: msg.fileName })

を参照してください。 のドキュメントを参照してください。