该项目使用 sqlite 和 sequelize。我习惯了普通的 sql,但是这种方法对于在 Node.js 中创建 API 看起来很有用。
我有两个模型:用户和组。一个组有很多用户,但一个是老师。我有一个单独的 UserInGroup 表来处理多对多,但对于老师的一对多关系,我已将关系重命名为“老师”(因此属性为teacherId)。
db.group.belongsTo(db.user, {as: 'teacher'});
db.user.hasMany(db.group, {as: 'teacher'});
当我登录并尝试创建组对象时,它尝试创建一个 userId 字段,该字段显然不存在。我怎样才能让它把 userId 放在教师 ID 字段中?
app.post('/groups', middleware.requireAuthentication, function(request, response){
var body = _.pick(request.body, 'name', 'description');
body.description = body.description.trim();
body.name = body.name.trim();
db.group.create(body).then(function(group){
request.user.addGroup(group).then(function(){
return group.reload();
}).then(function(group){
response.json(group.toJSON())
})
}, function (e) {
response.status(400).json(e);
})
});
我不想简单地重命名该字段,因为我还将管理一个“消息”对象,该对象需要为发件人和收件人获取两个用户 ID。我已经定义了 db.js 中的所有字段,但我不确定如何填充它们。
最佳答案
db.group.belongsTo(db.user, {as: 'teacher',foreignKey: 'teacherId'});
db.user.hasMany(db.group, {as: 'teacher',foreignKey: 'teacherId'});
引用:http://docs.sequelizejs.com/en/latest/docs/associations/
关于node.js - 在 sequelize 中重命名外键关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41653866/