2016-06-24 7 views
1

ich mein erstes sequelize Modell bauen, wie Sie es ergibt sich eine Menge von Verschachtelung sehen können, wenn die dazugehörigen Objekte erstellenWie vermeidet man die Verschachtelung beim Speichern assoziierter Objekte?

var values = [], 
    userAttributes = sequelize.models.userAttributes, 
    user = User.build(), 
    name = userAttributes.build({name: 'name', value: 'params.name'}), 
    fbprofile = userAttributes.build({name: 'fbprofile', value: 'params.fbprofile'}), 
    phone = userAttributes.build({name: 'phone', value: 'params.phone'}); 

user.save().then((user) => { 
    name.save().then((name) => { 
     fbprofile.save().then((fbprofile) => { 
      phone.save().then((phone) => { 
       user.addUserAttributes([name, fbprofile, phone]); 
      }); 
     }); 
    }); 
}); 

Wie kann ich das vermeiden?

Antwort

0

Sequelize hat eine Bluebird Promise-Instanz. Von dass Sie die Promise.all Methode

var values = [], 
    userAttributes = sequelize.models.userAttributes, 
    user = User.build(); 

user.save() 
    .then((user) => 
    sequelize.Promise.all([ 
     userAttributes.create({name: 'name', value: 'params.name'}), 
     userAttributes.create({name: 'fbprofile', value: 'params.fbprofile'}), 
     userAttributes.build({name: 'phone', value: 'params.phone'}) 
    ]) 
    .then((recordsArray) => 
     user.addUserAttributes(recordsArray); 
    ) 
); 
+0

Die Attribute scheinen auf die Datenbank wie erwartet hinzugefügt werden können, aber wenn ich 'user.getUserAttributes tun()', ist die Antwort '{„isFulfilled“: false,“ isRejected ": false}' – Himmators

Verwandte Themen