Я пытаюсь создать метод для 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();