Подтвердить что ты не робот

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);
   }
 });

Проблема заключается в том, как вставлять идентификаторы, которые я получаю в массив, в таблицу соединений в моей базе данных (с именем "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);
     });
 });

Еще раз спасибо за ваше время и предложения!

4b9b3361

Ответ 1

Что вы хотите сделать здесь, присоедините идентификаторы к своим отношениям, например:

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