Node.js plusieurs Sequelize brut de requête sql pour les sous-requêtes
Le titre semble compliqué. J'ai une table des utilisateurs, et chaque utilisateur peut avoir plusieurs intérêts. Ces intérêts sont liés à l'utilisateur par l'intermédiaire d'une table de recherche. En PHP j'ai interrogé la table des utilisateurs, puis, pour chacun, fait une requête pour trouver intérêts. Comment puis-je le faire de Nœud.js/Sequelize? Comment puis-je mettre en place une sorte de promesses trop? Par exemple:
sequelize.query("SELECT * FROM users").success(function(users) {
for (var u in users) {
sequelize.query("SELECT interests.id, interests.title FROM interests, user_interests WHERE interests.id = user_interests.interest_id AND user_interests.user_id = " + users[u].id).success(function(interests) {
if (interests.length > 0) {
users[u].interests = interests;
}
});
}
return users;
});
OriginalL'auteur Mark Robson | 2013-09-05
Vous devez vous connecter pour publier un commentaire.
De l'instruction de retour dans le bas de votre code, il semble que vous n'avez pas totalement compris la nature asynchrone de node.js. L'instruction de retour dans votre code sera exécutée directement après le premier appel à sequelize.la requête, qui est, avant que la requête retourne. Cela signifie que les utilisateurs ne sera pas défini.
Si vous voulais en fait "retour", les utilisateurs et de leur intérêt, je dirais quelque chose comme ceci:
Dans le code ci-dessus
_
se réfère à un utilitaire lib. qui exécute la fonction de rappel une fois que la fonction a été appelée utilisateurs.longueur de temps. Callback est une fonction qui est transmis à votre morceau de code, et doit traiter le résultat de retour, par exemple en renvoyant les utilisateurs vers le client dans le contexte d'un serveur web.Un autre commentaire - si vous ne faites que des premières requêtes SQL, Sequelize pourrait ne pas être le meilleur choix pour vous. Une raison quelconque vous n'êtes pas à l'aide de SQL pilote directement? Si vous souhaitez utiliser sequelize, vous devriez profiter de ses fonctionnalités. Essayez de définir un modèle pour les utilisateurs et les intérêts, de créer une association et de la charge des utilisateurs et des intérêts d'un seul coup à l'aide de Joint /impatient de chargement
mise à jour: Un exemple d'utilisation de promesses
_ est déjà utilisé dans sequelize, et exposée par
Sequelize.Utils._
Salut Jan, j'ai été bloqué sur le même problème pour de nombreuses heures. J'ai essayé à l'aide de la Promesse.le tout sans aucune chance. Je suis nouveau sur node.js et tous les async choses donc probable que j'ai été confus, mais je me demandais si tu avais un exemple de travail à l'aide de la Promesse.tous ? merci En tout cas de votre réponse, travaux et m'a beaucoup aidé.
J'ai ajouté un exemple d'utilisation de promesses
vous êtes une légende grâce
OriginalL'auteur Jan Aagaard Meier