我试图创建一个方法到userSchema,但我得到这个错误:
TypeError:无法将属性“generateAuthToken”设置为未定义
userSchema.methods.generateAuthToken = function() {
// const token = jwt.sign({ _id: user._id }, config.get("JWTPRIVATEKEY"));
const token = jwt.sign({ _id: this._id }, "Privatekey");
return token;
};
字符串
注意:我没有使用箭头函数,而是使用普通函数:
var userSchema = {
name: {
type: String,
require: true
},
email: {
type: String,
require: true,
unique: true
},
password: {
type: String
}
};
userSchema.methods.generateAuthToken = function() {
// const token = jwt.sign({ _id: user._id }, config.get("JWTPRIVATEKEY"));
const token = jwt.sign({ _id: this._id }, "Privatekey");
return token;
};
const User = mongoose.model("Users", new mongoose.Schema(userSchema));
function validateUser(user) {
let schema = {
name: Joi.string().required(),
email: Joi.string()
.required()
.email(),
password: Joi.string().required()
};
return Joi.validate(user, schema);
}
exports.User = User;
exports.validateUser = validateUser;
型
用例
let user = await User.findOne({ email: req.body.email });
const token = user.generateAuthToken();
型
1条答案
按热度按时间u7up0aaq1#
问题是你的
userSchema
只是一个普通的对象,而不是一个架构对象。所以它没有methods
属性(你的userSchema.methods
是undefined
),所以当你设置userSchema.methods.generateAuthToken
时,它会抛出一个错误。请查看文档https://mongoosejs.com/docs/guide.html#methods
您应该首先定义Schema对象
字符串