Вам не нужно делать password2
частью userSchema
. Лучше всего сделать функцию сравнения пароля, например, так:
UserSchema.methods.comparePassword = function(plaintext, callback) {
return callback(null, Bcrypt.compareSync(plaintext, this.password));
};
, также вы можете использовать Schema.pre
:
UserSchema.pre("save", function(next) {
if(!this.isModified("password")) {
return next();
}
this.password = Bcrypt.hashSync(this.password, 10);
next();
});
После этого вам нужно вызватьсравнить функцию от контроллера пользователя. Примерно так (в зависимости от вашей логики):
var user = await UserModel.findOne({ username: request.body.username }).exec();
if(!user) {
return response.status(400).send({ message: "The username does not exist" });
}
user.comparePassword(request.body.password, (error, match) => {
if(!match) {
return response.status(400).send({ message: "The password is invalid" });
}
});
Подробно вы можете прочитать эту превосходную статью .