2015-02-25 9 views
10

Ich habe Probleme beim Speichern von Daten in einer "Viele-zu-Viele" -Beziehung.Bookshelf.js - Wie man eine Viele-zu-Viele-Beziehung speichert?

Hier sind meine Modelle:

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

Die Herausforderung besteht darin, wie IDs einzufügen, die ich in einem Array an die Verknüpfungstabelle erhalten in meiner Datenbank (mit dem Namen "course_people")?

Hier ist mein Code so weit:

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

Danke nochmals für Ihre Zeit und Anregungen!

Antwort

13

Was wollen Sie hier zu tun ist, um die IDs Ihre Beziehung zu befestigen, wie folgt aus:

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

Es wird auch in den offiziellen Dokumente angegeben: http://bookshelfjs.org/#Model-attach

+0

ich dies versucht und es hat nicht funktioniert Nehmen wir an, mein Array von Werten sieht aus wie [1,2,3,4,5] es versucht, die Spalten wie folgt einzufügen: 'Einfügen in' users_courses' ('course_id',' user_id') Werte ('[1,2 , 3,4,5] ',' 1 ') ' –