Comment faire pour retourner un complexe de réponse JSON avec Node.js?
À l'aide de nodejs et de l'exprimer, j'aimerais retourner un ou plusieurs objets (tableau) à l'aide de JSON. Dans le code ci-dessous j'ai sortie un objet JSON à la fois. Cela fonctionne, mais ce n'est pas exactement ce que je veux. La réponse produite n'est pas un JSON valide la réponse car j'ai beaucoup d'objets.
Je suis bien conscient que je pourrais simplement ajouter tous les objets d'un tableau et de retour que matrice spécifique dans res.fin. Cependant, je crains que cela pourrait devenir lourd, de processus et de la mémoire intensive.
Quelle est la bonne façon de réaliser cela avec nodejs? Est de la requête.chaque de la méthode à appeler?
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();
}
});
});
Vous devez vous connecter pour publier un commentaire.
Sur express 3 vous pouvez utiliser directement res.json({foo:bar})
Voir le la documentation
foo
's grande, vous pourriez avoir besoin de faire des coupes (stringify, puis écrire le morceau à la fois). Probablement aussi veulent se votre en-tête"Content-Type":"application/json"
ou similaires, selon le cas.Je ne sais pas si c'est vraiment différent, mais plutôt que de faire une itération sur la requête curseur, vous pourriez faire quelque chose comme ceci:
[Modifier] Après examen de la Mangouste de la documentation, il semble que vous pouvez envoyer à chaque résultat de la requête comme une partie distincte; le serveur web utilise encodage de transfert en bloc par défaut de sorte que tous vous avez à faire est de conclure un tableau autour des éléments pour en faire un objet JSON valide.
Environ (non testé):
Sinon, comme vous le mentionnez, vous pouvez tout simplement envoyer le contenu du tableau en tant que-est. Dans ce cas le corps de la réponse va être mis en mémoire tampon et envoyé immédiatement, ce qui peut consommer une grande quantité de mémoire supplémentaire (au-dessus de ce qui est nécessaire pour stocker les résultats eux-mêmes) pour les grands ensembles de résultats. Par exemple: