2017-01-14 205 views
0

此项目使用sqlite和sequelize。我习惯于普通的sql,但是这个方法在Node.js中创建API看起来很有用。将外键关联重命名为

我有两种模式:用户和组。一个小组有许多用户,但其中一个是老师。我有一个单独的UserInGroup表来处理多对多的问题,但对于教师一对多关系,我已将关系“教师”重命名(因此属性为teacherId)。

db.group.belongsTo(db.user, {as: 'teacher'}); 
db.user.hasMany(db.group, {as: 'teacher'}); 

当我登录并尝试创建组对象时,它会尝试创建一个userId字段,该字段显然不存在。我如何让它把userId放在teacherId字段中?

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中的所有字段,但我不知道如何填充它们。

回答