Метод схемы мангуста, возвращающий данные, не является функцией

#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 сделала свое дело. Все еще не уверен, в чем причина проблемы.