#node.js #mongodb #mongoose #schema
Вопрос:
userSchema.method.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
Итак, в приведенном выше коде у меня есть метод схемы пользователя мангуста в моей базе данных пользователей для сравнения зашифрованных паролей, хранящихся в моей базе данных каждый раз, когда пользователь пытается войти в систему.
const ispasswordMatched = await User.comparePassword(password);
В этом коде я вызываю этот метод в контроллере, но каждый раз, когда я делаю запрос почтальону, он возвращает ошибку, в которой говорится, что User.comparePassword не является функцией. Я некоторое время искал информацию о других, испытывающих это, но ничто не могло решить мою проблему, и это оставило меня в замешательстве относительно того, как приступить к решению этой проблемы. Любые советы или подсказки очень ценятся.
Быстрое редактирование Я использую mongodb версии 4.4 с мангустом версии 5.12.5
Ответ №1:
Я думаю, что это опечатка, вы пропускаете букву «с» после method
. Попробуйте это:
userSchema.methods.comparePassword = async function(enteredPassword){
return await bcrypt.compare(enteredPassword, this.password);
}
Документ мангуста здесь
Ответ №2:
я бы предпочел использовать его, как упомянутый метод в документах мангуста
https://mongoosejs.com/docs/api.html#schema_Schema-method
где упоминание имени является аргументом для функции метода.Не похоже на то, что вы здесь сделали, например. схема const = kittySchema = новая схема(..);
schema.method('meow', function () {
console.log('meeeeeoooooooooooow');
})
const Kitty = mongoose.model('Kitty', schema);
const fizz = new Kitty;
fizz.meow();
Комментарии:
1. Попробовал, вернул ту же ошибку, еще одно быстрое редактирование, которое я видел, некоторые люди предлагают мне сделать резервную копию и переустановить mongodb. Я относительно новичок в программировании, но не могли бы вы порекомендовать это?
2. сделайте это также , убедитесь, что вы тоже используете последнюю версию мангуста. и проверьте, чем. просто подтвердите, что оба метода находятся в одном файле js, верно?
3. Переустановка mongodb сделала свое дело. Все еще не уверен, в чем причина проблемы.