Сохранение хешированного пароля в Sequelize противоречит моему простому желанию сохранить хешированный пароль

Это мой первый день использования Sequelize с postgreql, так что простите за мои наивные вопросы. У меня есть простая модель, чтобы опробовать ее:

var User = sequelize.define(«user», { username: Sequelize.STRING, password: Sequelize.STRING })

Я использую expressjs / node и паспорт JS, чтобы пользователь мог зарегистрироваться / зарегистрироваться:

passport.use(‘local-register’, new LocalStrategy({ passReqToCallback: true }, function (req, username, password, done) { User.findOne({ where: { username: username } }).then(function (user) { if (user) { return done(null, false, { message: «enter email that belongs to you please…» }, console.log(‘That email is already taken’)); } else { //use bcrypt to salt and hash the password let saltRounds = 2; let hashedpass = bcrypt.hash(password, saltRounds); var data = { username: username, password: hashedpass //password }; User.create(data).then(function (newUser, created) { if (!newUser) { return done(null, false); } if (newUser) { return done(null, newUser); } }); } }).catch(err => { console.log(«catch error :», err) }); }));

Теперь, когда я пытаюсь зарегистрироваться как пользователь, я получаю сообщение об ошибке:

UnhandledPromiseRejectionWarning: SequelizeValidationError: string violation: password cannot be an array or an object at InstanceValidator._validate (D:mycodepostegresqlpostee1node_modulessequelizelibinstance-validator.js:78:13) at processTicksAndRejections (internal/process/next_tick.js:81:5)

Я понимаю, что это проверка sequelize для пароля STRING, но я не добавлял никакой проверки и какой тип данных sequelize принимает хешированный пароль?

Я понимаю, как добавлять крючки в мою модель, и он правильно хеширует пароль перед сохранением в базу данных:

hooks: { beforeCreate: (user) => { const salt = bcrypt.genSaltSync(2); user.password = bcrypt.hashSync(user.password, salt); } }, instanceMethods: { validPassword: function (password) { return bcrypt.compareSync(password, this.password); } }

Но я хочу хешировать пароль в коде моего сервера, как я пытался сделать выше. Как исправить ошибку проверки, указанную выше? Я просто хочу использовать Bycrpt в своем паспорте. Тип данных неправильный? Как исправить эту ошибку, не трогая мою модель? Это не должно быть проблемой, потому что я уже хешировал пароль, мне просто нужно его сохранить, но похоже, что Sequelize заставляет это делать определенным образом, поэтому для всех продолжений NINJAS, как мне это исправить?

это Sequelize dataType? этого нет в их документах. sequelize.org/v5/manual/data-types.html   —  person Marco    schedule 13.02.2021

Мое плохое, см. Ответ ниже   —  person Marco    schedule 13.02.2021

Источник: ledsshop.ru

Стиль жизни - Здоровье!