Sequelize JS建筑协会

时间:2013-12-02 10:48:25

标签: node.js postgresql sequelize.js

我正在使用sequelizejs和postgres构建用户和角色关联。每个用户可以拥有一个角色,每个角色都属于许多用户。

我已经设置了这样的关联

global.db.User.belongsTo(global.db.Role, {foreignKey: 'role_id', as: 'Role'});

global.db.Role.hasMany(global.db.User, {foreignKey: 'role_id'});

现在,当我在app.js中设置对象并同步sequelize时,它无法正常工作:

var role = Role.build({ name: 'foo', permissions: 'bar'});
var user = User.build({username: 'sultansaadat', email: 'abc@abc.com', password: 'sultan123', isActive: true});
db.sequelize.sync().complete(function (err) {
if (err) {
    throw err
} else {
    role.save();
    user.setRole(role);
    user.save();
}

});

我期待续集会表现得像所有正常的ORM一样,但我认为这里有问题或者我做错了。

1 个答案:

答案 0 :(得分:5)

究竟什么不起作用?

node.js,因此sequelize本质上也是异步的。当您调用role.save时,该调用将在数据库实际返回之前返回。您必须等待角色保存并分配ID,然后才能将其分配给用户。

role.save().done(function (err, role) {
    user.save().done(function (err, user) {
        user.setRole(role);
    });
});