"Неверные аргументы", выданные bcrypt-nodejs - Passport

У меня установлена ​​система входа в систему для моего приложения Node.js. Недавно я внес изменения в свою модель пользователя (CoffeeScript):

password: String

в

password:
        type: String
        select: false

Моя функция для сравнения хэшей паролей с bcrypt выглядит следующим образом:

userSchema.methods.validPassword = (password) ->
        bcrypt.compareSync password, @local.password

Теперь, когда я запускаю вышеупомянутую функцию, эта ошибка выдается

Incorrect arguments

У кого-нибудь есть идеи, почему это будет сгенерировано после того, как я добавлю "select: false" в мою модель пользователя?

3 ответа

Выдается, если пароль или @local.password не является строкой. Это случилось со мной, когда я пытался вызвать метод экземпляра для экземпляра, который не включал @local.password в загруженные атрибуты.

userSchema.methods.validPassword = (password) ->
  bcrypt.compareSync password, @local.password

Предполагая, что это в классе, вам нужно => скорее, чем -> Для того чтобы @local работать.

Зарегистрируйте значения как сохраненного, так и входящего пароля. Держу пари, что один из них не определен.

Проверьте, заполняется ли значение для пароля. Если выбрано значение false, пароль не будет восстановлен.

Другие вопросы по тегам