Sequelize hasOne不允许多行共享相同的关系

时间:2014-05-14 15:10:35

标签: node.js postgresql orm sails.js sequelize.js

我遇到了使用Postgres驱动程序的sails.js的问题:

"dependencies": {
    "sequelize": "^1.7.0",
    "pg": "^3.0.3"
}

我有一个Activity模型,它与2个模型有一个hasOne关系,属于另一个模型:

classMethods: {
    associate: function(models) {
        Activity.hasOne(models.Model2);
        Activity.hasOne(models.Model3);
        Activity.belongsTo(models.User);
    }
}

我遇到的问题是我似乎无法创建共享相同Model2或Model3行/实例的2个活动实例。我宣布第一个:

Activity.create({}).complete(function(err, activity) {
    if(err) throw err;
    activity.setUser(User_Instance_X)
    activity.setModel2(Model2_Instance_X);
    activity.setModel3(Model3_Instance_X);
    activity.save().complete(db_save_cb);
}

如果我再宣布另一个,使用相同的Model2& Model3实例但是不同的用户,则第一行/实例不再包含对Model2&的引用。 3,只有最新的行/实例包含该引用。

这是令人费解的功能?对我来说缺乏了解还是一个错误?

1 个答案:

答案 0 :(得分:2)

我将在评论中提供我们想出的答案。对于他所有的协会,OP实际上想要的是belongsTo

Sequelize中的

belongsTo会在来源上添加外键,而hasOne会在目标上添加外键。

hasOne实际上很少使用,可能是由于api的变化。