forEach utilisant des générateurs dans Node.js
Je suis en utilisant Koa.js cadre et Mongoose.js module.
Normalement d'obtenir un résultat de MongoDB je code comme ceci:
var res = yield db.collection.findOne({id: 'my-id-here'}).exec();
Mais j'ai besoin d'exécuter cette ligne pour chaque élément d'un tableau nommé 'articles'.
items.forEach(function(item) {
var res = yield db.collection.findOne({id: item.id}).exec();
console.log(res) //undefined
});
Mais ce code ne fonctionne pas que le rendement est en fonction. Si j'écris ceci:
items.forEach(function *(item) {
var res = yield db.collection.findOne({id: item.id}).exec();
console.log(res) //undefined
});
Je ne suis pas d'obtenir le résultat dans la variable res. J'ai essayé d'utiliser " générateur foreach ' module, mais ça n'a pas fonctionné comme cela.
Je sais que c'est mon manque de connaissances sur la langue d'alphabétisation de Node.js. Mais pouvez-vous les gars m'aider à trouver une façon de comment faire cela?
source d'informationauteur Mazhar Ahmed
Vous devez vous connecter pour publier un commentaire.
Vous pouvez
yield
tableaux, il suffit donc de faire un plan de votre async promesses dans une autre carteAccepté la réponse est fausse, il n'est pas nécessaire d'utiliser une bibliothèque, un tableau est déjà un objet iterable.
C'est une vieille question, mais comme il n'a pas de réponse correcte, et il apparaît sur la première page de recherche google pour les termes-clés "les itérateurs et forEach" je vais répondre à la question:
Il n'est pas nécessaire pour parcourir un tableau, depuis un tableau déjà conforme à l'objet iterable API.
à l'intérieur de votre générateur suffit d'utiliser le "rendement* le tableau" (note * )
rendement* l'expression est utilisée pour objet de déléguer à un autre générateur ou de l'objet itérable
Exemple:
Pour des exemples et des informations détaillées, visitez:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield*
Merci les gars, j'ai fait cela à l'aide de la " CO module. Merci.
EDIT: Avec la dernière version de CO, vous avez besoin de co.wrap() pour que cela fonctionne.