Nœud Mysql async plusieurs requêtes
Je me demandais quelle est la meilleure façon de gérer imbriquée mysql-requêtes est nodejs.
Donc quelque chose comme ceci:
connection.query("SELECT * FROM blogs ORDER BY time DESC", function(err, blogs, fields) {
for (blog in blogs) {
connection.query("SELECT * FROM tags WHERE blog_id='blog.id' ", function(err, tags, fields) {
blog.tags = tags
});
}
res.send(blogs)
});
De toute évidence, cela ne fonctionne pas, en raison de la nature asynchrone. Le résultat fait déjà retourné avant les balises sont récupérées.
J'ai lu sur le nœud et les rappels et les promesses semble être la voie à suivre. Mais je n'arrive pas à voir comment je pourrais les utiliser au mieux dans ce petit exemple.
Thx!
Ce serait une bonne occasion pour commencer à utiliser une promesse de la bibliothèque comme Q, dans ce cas, il est
Q.spread
de la méthode (ou peut-être ces exemples de réductionOriginalL'auteur mhtsbt | 2014-06-15
Vous devez vous connecter pour publier un commentaire.
De sorte que vous avez à attendre pour tous les rappels de retour avant de vous envoyer la réponse. Si nous ignorons la gestion d'erreur et vide résultats pour la simplicité, ce qui peut être fait similaires à:
Avec des promesses, regarder dans la Promesse.toute la fonction qui retourne une nouvelle promesse. Cela promet est résolu lorsque toutes les promesses passées dans le tableau sont résolus. Avec le Q de la bibliothèque, il doit être quelque chose comme:
OriginalL'auteur Alexei
Vous pouvez utiliser asynchrone.module de la série(pour itérer sur les requêtes`)
Vous pouvez améliorer avec et de requête.fonction (pour traiter chaque ligne)
OriginalL'auteur randomness
Vous pouvez essayer quelque chose comme cela;
Espère que cette aide.
OriginalL'auteur vmx