Проблема :
У меня настроен базовый поток аутентификации.У меня есть пользовательский метод на моей модели пользователей:
userSchema.methods.joiValidate = function() {
console.log(typeof this.username);
const Joi = require("joi");
const schema = {
username: Joi.types.String.min(6)
.max(24)
.required(),
email: Joi.types.String.email().required(),
password: Joi.types.String.min(8)
.max(30)
.regex(/[a-zA-Z0-9]{3,30}/)
.required()
};
return Joi.validate(this, schema);
};
Но он работает не так, как ожидалось.
Когда я создаю нового пользователя и проверяю его следующим образом:
const invalidUser = new User({
username: "bob",
email: "test@gmail.com",
password: "test123"
});
invalidUser.joiValidate();
Я получаю это сообщение об ошибке: TypeError: Cannot read property 'String' of undefined
Я не знаю почему?this
в моем методе относится именно к этому пользователю, и в нем есть все обязательные поля (имя пользователя, адрес электронной почты и пароль), когда я console.log его в самой модели (документе). Я также пытался Joi.validate(this.toObject(), schema)
на метод, но это ничего не меняет.
Может кто-нибудь объяснить мне, что происходит и почему он не работает?