我遇到了使用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,只有最新的行/实例包含该引用。
这是令人费解的功能?对我来说缺乏了解还是一个错误?
答案 0 :(得分:2)
我将在评论中提供我们想出的答案。对于他所有的协会,OP实际上想要的是belongsTo
。
belongsTo
会在来源上添加外键,而hasOne
会在目标上添加外键。
hasOne
实际上很少使用,可能是由于api的变化。