Я пытаюсь аутентифицировать пользователя, но я получаю эту ошибку в почтальоне
{
"error": "data and hash arguments required"
}
Моя пользовательская модель выглядит так:
const mongoose = require('mongoose')
const bcrypt = require('bcrypt')
const SALT_WORK_FACTOR = 10
const Schema = mongoose.Schema
const UserSchema = new Schema({
username: { type: String, required: true, index: { unique: true } },
password: { type: String, required: true }
})
UserSchema.pre('save', function (next) {
let user = this
// only hash the password if it has been modified(or is new)
if (!user.isModified('password')) return next()
// generate a salt
bcrypt.genSalt(SALT_WORK_FACTOR, (err, salt) => {
if (err) return next()
// hash the password along with our new salt
bcrypt.hash(user.password, salt, (err, hash) => {
if (err) return next(err)
// override the cleartext password with the hashed one
user.password = hash
next()
})
})
})
UserSchema.methods.comparePassword = (candidatePassword, callback) => {
console.log('Password', this.password)// undefined
bcrypt.compare(candidatePassword, this.password, (err, isMatch) => {
callback(err, isMatch)
})
}
module.exports = mongoose.model('userData', UserSchema, 'userData')
Я понял, что this.password
, переданный в функцию сравнения bcrypt, разрешается как неопределенное. Как я могу получить доступ к переменной пароля, определенной внутри экземпляра UserSchema выше?