我正在尝试在类方法中设置关联,但它不能正常工作!
const User = sequelize.define('User', {
email: DataTypes.STRING,
password: DataTypes.STRING,
}, {
classMethods: {
associate: (models) => {
User.hasMany(models.AnotherModel, {foreignKey: 'userId'});
},
}
});
但是当我在classMethods
块之外设置关联时,它可以工作:
User.associate = function (models) {
User.hasMany(models.AnotherModel, {foreignKey: 'userId'});
};
为什么classMethods
内的代码阻止无效?
续集版本:4.2.0
答案 0 :(得分:4)
答案 1 :(得分:0)
记住何时库所有者将旧方法保留一段时间,让它报告它已被弃用,但仍然可以运行,所以当我们重新审视一个已有三年历史的项目时,并且不知道为什么将代码提前中断整个宇宙,我们可能会在分辨率上找到一些方向?我记得那些日子。令人愉快的日子,那些。
我们正处在大型代码转发更新的中间,将旧的应用程序引入到Node等的现代版本中,并且胡扯,一切都被破坏了。这会很有趣。
深入研究,这是“预期的行为”,但是,哇,这是一种可怕的学习方式。 :(
答案 2 :(得分:0)
,带有“ sequelize”:“ 5”。 在我的代码中用它来开发秘鲁的OSE服务器:
'use strict';
module.exports = (sequelize, DataTypes) => {
const UserModel = sequelize.define('user', {
user: DataTypes.STRING,
password: DataTypes.STRING,
description: DataTypes.STRING
}, {});
UserModel.associate = function (models) {
// associations can be defined here
};
UserModel['getHashName'] = () => {
return 'UserCache';
};
UserModel['getCacheKey'] = () => {
return 'user';
};
UserModel['getCacheValue'] = () => {
return 'password';
};
return UserModel;
};
接下来的通话:
console.log(User.getHashName());
console.log(User.getCacheKey());
console.log(User.getCacheValue());