2016-06-24 65 views
1

我建立我的第一個sequelize模型,你可以看到它創建相關聯的對象如何在保存關聯對象時避免嵌套?

時導致大量的嵌套
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]); 
      }); 
     }); 
    }); 
}); 

我怎樣才能避免這種情況?

回答

0

Sequelize有一個Bluebird承諾實例。從您可以使用Promise.all方法

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

的屬性似乎被添加到數據庫如預期,但如果我不'user.getUserAttributes()',響應'{「isFulfilled」:假」 isRejected「:假}' – Himmators