2017-08-05 1 views
0

étrangère J'ai deux modèles, Article et ArticleGroup:SequelizeJS: Lot réglage clé

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

... 

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

Je travaille avec des données héritées où la connexion entre ces deux est faite avec le champ GROUP_CODE. J'ai ajouté une clé étrangère au modèle article. Le problème est lorsque j'essaie de mettre à jour cette clé étrangère. Voici le code avec lequel je suis en train d'accomplir cela:

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

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

Avec ce code, je reçois un tas de:

... 
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' 
... 

C'est la mise à jour du updatedAt mais pas le champ groupArticleId. Comment puis-je accomplir cela?

Répondre

0

Le code qui a fait l'association était la suivante:

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

qui n'a jamais été fait, parce qu'aucun de mes modèles avait la propriété associate. Modification des modèles à partir de:

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

à:

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

return Article; 

fixe mon problème puisque maintenant les modèles ont la propriété associate et peuvent être correctement associés par exemple Sequelize va créer des getters et setters pour les clés étrangères.