Bookshelf.js – 如何保存多对多的关系?

我有麻烦保存数据在“多对多”的关系。

这是我的模特:

var CoursePeople = bookshelf.Model.extend({ tableName: 'course_people' }); var Course = bookshelf.Model.extend({ tableName: 'course', users: function(){ return this.belongsToMany(User); } }); var City = bookshelf.Model.extend({ tableName: 'city', users: function(){ return this.hasMany(User); } }); var User = bookshelf.Model.extend({ tableName: 'people', city: function(){ return this.belongsTo(City); }, courses: function(){ return this.belongsToMany(Course); } }); 

面临的挑战是,如何将我在数组中获得的ID插入数据库中的联结表(名为“course_people”)?

这是我的代码到目前为止:

  app.post('/users/', function(req, res) { console.log(req.body); var courses_ids = req.body.courses_ids; //array of ids delete req.body.courses_ids; new User(req.body).save().then(function(user){ console.log(user.id); //How to store the ids in the junction table? }).catch(function(error){ console.log(error); }); }); 

再次感谢您的时间和build议!

你想在这里做的是把ID附加到你的关系,就像这样:

 app.post('/users/', function(req, console.log(req.body); var courses_ids = req.body.courses_ids; //array of ids delete req.body.courses_ids; new User(req.body).save() .then(function(user){ // this is important return user.courses().attach(courses_ids); }).catch(function(error){ console.log(error); }); }); 

在官方文档中也有说明: http : //bookshelfjs.org/#Model-attach