Javascript 无法设置属性';函数名';未定义的
我正在通过观看这个视频学习MEVN 我模仿向const User添加一个函数,如下所示:Javascript 无法设置属性';函数名';未定义的,javascript,node.js,Javascript,Node.js,我正在通过观看这个视频学习MEVN 我模仿向const User添加一个函数,如下所示: module.exports = (sequelize, Datatypes) =>{ const User = sequelize.define('User', { email:{ type:Datatypes.STRING, unique: true }, password:Datatypes.STRING }, { hooks:{
module.exports = (sequelize, Datatypes) =>{
const User = sequelize.define('User', {
email:{
type:Datatypes.STRING,
unique: true
},
password:Datatypes.STRING
}, {
hooks:{
beforeCreate: hashPassword,
beforeUpdate: hashPassword,
beforeSave: hashPassword
}
})
User.prototype.comparePassword = function(password) {
return bcrypt.compareAsync(password, this.password)
}
return User
}
但它总是显示TypeError:无法设置未定义的属性“comparePassword”
(教程视频对此没有问题。)
我尝试使用“User.\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
希望有人能帮我,谢谢 您使用的是较旧版本的sequelize,它还不支持使用原型扩展实例 根据旧方法,将提供
instanceMethods
const Model = sequelize.define('Model', {
...
}, {
classMethods: {
associate: function (model) {...}
},
instanceMethods: {
someMethod: function () { ...}
}
});
4.X的工作方式与您试图使其工作的方式相同。
用户
对象未定义用户
不是对象…请不要使用文本图片。。。两者都可以在编辑器中进行复制、粘贴和格式化。图片使复制有问题的代码用于测试变得更加困难。好的,我现在编辑它,您使用的是哪个版本的sequelize?你确定你用的是4.x吗?您可能正在使用不支持这种扩展实例方式的旧版本。