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