我无法在 sequelize 模型中访问 this.getDataValue,但它在文档中说我们可以访问它,我正在使用 SEQUELIZE v5。
我不知道我必须做什么,但我已经弄清楚了很多事情。
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';
};
关于sequelize.js - this.getDataValue 不是函数 - 模型 sequelize v.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61391985/