2016-06-24 67 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