Ich habe ein Projekt, das ich versuche, Sequelize auf zu verwenden. Es erstellt die Datenbank und Tabellen fein, aber es findet nie die assoziierte Klassenmethode, so dass es nie die assoziative Methode aufruft.Sequelize Associate nicht gefunden
Dieser Code funktioniert einwandfrei, um die Tabellen zu erstellen (mithilfe der Importmethode), aber Object.keys (db) iteriert über jedes Modell, findet jedoch nie die zugehörige Methode.
fs.readdirSync('./models')
.filter(function (file) {
return (file.indexOf('.') !== 0) && (file !== 'index.js') && (file.indexOf('.js') > 0) && (file.indexOf('relations.js') !== 0);
})
.forEach(function (file) {
var model = sequelize.import('../models/' + file);
db[model.name] = model;
});
Object.keys(db).forEach(function (modelName) {
if (db[modelName].associate) {
db[modelName].associate(db);
console.log('true');
}
else {
console.log('false');
}
}
);
Class Code-Beispiel:
module.exports = function (sequelize, Datatypes) {
let userModel = sequelize.define('user', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
email: {
type: DataTypes.STRING,
validate: {
isEmail: true
},
allowNull: false
}
}, {
classMethods: {
associate: function (models) {
let createdByoptions = {
foreignKey: 'createdByUserID'
};
let emailOptions = {
foreignKey: 'emailAddressID'
};
userModel.hasOne(models.user, createdByoptions);
userModel.hasOne(models.email, emailOptions)
//userModel.hasMany(models.tenant, {foreignKey: 'id'});
},
addUser: function (identityID) {
userModel.create({identityUserID: identityID});
}
}
});
return userModel;
};
Welche Version von sequelize sind Sie auf – Shivam
Sie müssen auch 'as' verwenden, da Sie den Benutzer mit sich selbst verbinden – Shivam
Ich benutze 4.2.1. – Bryce