Sequelize.js this.getDataValue不是函数模型sequelize v.5
我无法在sequelize模型中访问this.getDataValue,但它在文档中说我们可以访问它,我使用的是sequelize v5。 我不知道我必须做什么,但我已经想出了很多事情Sequelize.js this.getDataValue不是函数模型sequelize v.5,sequelize.js,Sequelize.js,我无法在sequelize模型中访问this.getDataValue,但它在文档中说我们可以访问它,我使用的是sequelize v5。 我不知道我必须做什么,但我已经想出了很多事情 module.exports = (sequelize, DataTypes) => { var User = sequelize.define('User', { email: DataTypes.STRING, name: DataTypes.STRING, password
module.exports = (sequelize, DataTypes) => {
var User = sequelize.define('User', {
email: DataTypes.STRING,
name: DataTypes.STRING,
password : DataTypes.STRING,
is_active : DataTypes.BOOLEAN,
}, {});
User.associate = function(models) {
// associations can be defined here
};
User.toJSON = function () {
var values = Object.assign({}, this.get());
delete values.password;
return values;
}
User.comparePassword = async function (email, pw) {
let err, pass;
//ERROR RIGHT HERE
if(!this.getDataValue('password')) TE('password not set');
[err, pass] = await to(bcrypt_p.compare(pw, this.password));
if(err) TE(err);
if(!pass) TE('invalid password');
return this;
}
User.getJWT = function () {
return "Bearer "+jwt.sign({id:this.id}, "BAMBANG", {expiresIn: 86400});
};
User.toWeb = function () {
let json = this.toJSON();
return json;
};
return User;
};
似乎您添加了类方法而不是实例方法。这是官方文件中的一个示例:
// Adding a class level method
User.classLevelMethod = function() {
return 'foo';
};
// Adding an instance level method
User.prototype.instanceLevelMethod = function() {
return 'bar';
};
您是否在错误行中检查了“this”?它是一个静态模型对象还是一个记录实例?是的,我检查了它,它返回用户实例,我也试过了,但不工作Docs说你可以在模型中定义的getter和setter中调用getDataVelue。我认为它的v4,im在v5模型中使用的v5被定义为es6类。我在你的问题中没有这样的定义