2017-08-05 3 views
0

Ich habe zwei Modelle, Article und ArticleGroup:SequelizeJS: Batch-Einstellung Fremdschlüssel

sequelize.define('article', { 
    GROUP_CODE: { 
    type: DataTypes.STRING, 
    }, 
    ... 
}, { 
    classMethods: { 
    associate: function(models) { 
     this.belongsTo(models.articleGroup); 
    }, 
    }, 
}); 

... 

sequelize.define('articleGroup', { 
    GROUP_CODE: { 
     type: DataTypes.STRING, 
    }, 
    ... 
}); 

ich mit Altdaten arbeiten, in denen die Verbindung zwischen diesen beiden mit dem GROUP_CODE Feld gemacht wird. Ich habe dem Modell article einen Fremdschlüssel hinzugefügt. Das Problem ist, wenn ich versuche, diesen Fremdschlüssel zu aktualisieren. Dies ist der Code, mit dem ich versuche, das zu erreichen:

let db = require('../models'); 

db.articleGroup.findAll().then((groups) => { 
    groups.forEach((group) => { 
    db.article.update({groupArticleId: group.id}, {where: {GROUP_CODE: group.GROUP_CODE}}); 
    }); 
}); 

Mit diesem Code ich ein Bündel von:

... 
Executing (default): UPDATE `article` SET `updatedAt`='2017-08-05 12:43:02' WHERE `GROUP_CODE` = '6' 
Executing (default): UPDATE `article` SET `updatedAt`='2017-08-05 12:43:02' WHERE `GROUP_CODE` = '11' 
Executing (default): UPDATE `article` SET `updatedAt`='2017-08-05 12:43:02' WHERE `GROUP_CODE` = '1' 
... 

Es ist die updatedAt modernisiert werden, aber nicht das groupArticleId Feld. Wie kann ich das erreichen?

Antwort

0

Der Code, der den Verein tat, war folgendes:

Object.keys(db).forEach(function(modelName) { 
    if (db[modelName].associate) { 
    db[modelName].associate(db); 
    } 
}); 

die nie geschehen war, weil keiner meiner Modelle die associate Eigenschaft hatte. Ändern der Modelle aus:

sequelize.define('article', { 
    ... 
}, { 
    classMethods: { 
    associate: function(models) { 
     this.belongsTo(models.articleGroup); 
    }, 
    }, 
}); 

zu:

let Article = sequelize.define('article', { 
    ... 
}); 
Article.associate = function(models) { 
    this.belongsTo(models.articleGroup); 
} 

return Article; 

mein Problem behoben, da jetzt die Modelle haben die associate Eigenschaft und ordnungsgemäß zum Beispiel in Verbindung gebracht werden können Sequelize erstellt Getter und Setter für die Fremdschlüssel.

Verwandte Themen