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.