Promesses dans Sequelize: comment obtenir des résultats de chaque promesse
Dans Sequelize >=1.7 nous pouvons utiliser des promesses
Pouvez-vous expliquer pour moi comment puis-je obtenir les valeurs de chaque utilisateur dans ce code:
var User = sequelize.define("user", {
username: Sequelize.STRING
})
User
.sync({ force: true })
.then(function() { return User.create({ username: 'John' }) })
.then(function(john) { return User.create({ username: 'Jane' }) })
.then(function(jane) { return User.create({ username: 'Pete' }) })
.then(function(pete) {
console.log("we just created 3 users :)")
console.log("this is pete:")
console.log(pete.values)
//what i want:
console.log("this is jane:")
console.log(jane.values)
console.log("this is john:")
console.log(john.values)
})
UPD
Toutes les valeurs ont besoin pour définir les associations avec d'autres Modèle.
En fait j'ai besoin, comme certains de ce code:
User.hasMany(Group)
Group.hasMany(User)
User
.sync({ force: true })
.then(function() { return User.create({ username: 'John' }) })
.then(function(john) { return User.create({ username: 'Jane' }) })
.then(function(jane) { return User.create({ username: 'Pete' }) })
.then(function(pete) { return Group.findOrCreate({id: 1}) })
.then(function(group) {return group.setUsers([john, jane, pete])})
.then(function(result) { console.log(result)})
})
source d'informationauteur dpolyakov
Vous devez vous connecter pour publier un commentaire.
Le Bluebird est-ce que les la collecte des fonctions d'assistance.
Si vous voulez créer, en parallèle, l'utilisation
map
:Si vous avez besoin pour créer de façon consécutive, de passer à la
mapSeries
(3.0+).Si le tableau n'a pas besoin d'être dynamique, et vous avez tout simplement envie de passer une valeur partagée par la promesse de la chaîne, comme dans votre exemple, avoir un regard sur Comment puis-je accéder précédente promettent des résultats dans un .alors() de la chaîne?.
À l'aide de pas de bibliothèques supplémentaires (et si vous avez besoin pour maintenir l'ordre de crée), vous pouvez le faire simplement en créant des variable(s) dans le cadre englobant qui détiennent les valeurs:
Toutefois, en général, je recommande que vous vous penchez vers @Bergi réponse qui crée une liste de Promesses et attend toutes les promesses à remplir.
Modifier basée sur la question de mise à jour:
À l'aide de mise à jour de votre bloc de code et en s'appuyant sur @Bergi la suggestion de
Promise.map
vous pouvez éviter d'utiliser des variables dans une étendue supérieure avec quelque chose comme ce qui suit:...