2017-10-04 1 views
0

Ich benutze Sequelize für node.js. Ich definiere diese Beziehung:Wie kann die Zuordnung einer Modellinstanz geändert und gespeichert werden?

// 1:M - Platform table with Governance status table 
dbSchema.Platform_governance.belongsTo(dbSchema.Governance_status, {foreignKey: 'platform_status'}); 
dbSchema.Governance_status.hasMany(dbSchema.Platform_governance, {foreignKey: 'platform_status'}); 

Das heißt also, ich eine Tabelle namens platform_governance haben, die einen Fremdschlüssel hat, die zu einer governance_status Reihe zeigt. Ein Benutzer möchte diesen Fremdschlüssel so ändern, dass er auf eine andere Zeile "governance_status" verweist.

Also ich möchte zunächst suchen, dass diese Governance-Zeile der Benutzer ausgewählter tatsächlich existiert und einzigartig ist, und dann den Fremdschlüssel darauf zeigen. Dies ist, was ich derzeit haben:

// first I select the platform_governance of which I want to change it's foreign key 
dbSchema.Platform_governance.findById(5, {include: [dbSchema.Governance_status]}).then(result => { 
    // Now I search for the user-requested governance_status 
    dbSchema.Governance_status.findAll({where:{user_input}}).then(answer => { 
    // I check that one and only one row was found: 
    if (answer.length != 1) { 
     console.log('error') 
    } else { 
     // Here I want to update the foreign key 
     // I want and need to do it through the associated model, not the foreign key name 
    result.set('governance_status', answer[0]) 
    result.save().then(result => console.log(result.get({plain:true}))).catch(err => console.log(err)) 
    } 

Die result.save() Versprechen erfolgreich zurückgegeben und das Objekt in der Konsole gedruckt korrekt ist, mit dem neuen governance_status richtig eingestellt ist. Aber wenn ich in die Datenbank gehe, hat sich NICHTS geändert. Nichts wurde wirklich gerettet.

Antwort

0

Ups nur das Problem gefunden. Wenn Sie solche Zuordnungen festlegen, sollten Sie die Methode set() nicht verwenden. Stattdessen erstellt Sequelize Setter für jede Assoziation. In meinem Fall hatte ich setGovernance_status() zu verwenden:

// Update corresponding foreign keys 
    result.setGovernance_status(answer[0]) 

Wenn jemand irgendwo in der Dokumentation findet, wo dies dokumentiert ist, würde ich schätzen :)

Verwandte Themen