【问题标题】:Sequelize JS building associationsSequelize JS 构建关联
【发布时间】:2013-12-03 19:55:51
【问题描述】:

我正在使用 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();
}

});

我期待 sequelize 的行为与所有正常的 ORM 一样,但我认为这里有问题,或者我做错了什么。

【问题讨论】:

    标签: node.js postgresql sequelize.js


    【解决方案1】:

    究竟是什么不工作?

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

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

    【讨论】:

    • 我了解事物的异步性质,但事件并没有为我触发。
    • 我希望 sequelizejs 文档更好。谢谢你的回答:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多