node.js orm bookshelf.js

node.js - Bookshelf.js: cómo salvar una relación de muchos a muchos.



orm (1)

Tengo problemas para guardar datos en una relación de "muchos a muchos".

Aquí están mis modelos:

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

El desafío es cómo insertar los identificadores que obtengo en una matriz en la tabla de unión en mi base de datos (denominada "curso_personas").

Aquí está mi código hasta ahora:

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

¡Gracias de nuevo por su tiempo y sugerencias!


Lo que quieres hacer aquí es adjuntar los identificadores a tu relación, así:

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

También se indica en los documentos oficiales: http://bookshelfjs.org/#Model-attach