注册用户时出现此错误:
(节点:13225)UnhandledPromiseRejectionWarning:错误:非法参数:未定义,字符串在 Object.bcrypt.hashSync(/home/admin/Desktop/project/node_modules/bcryptjs/dist/bcrypt.js:189:19)在 module.exports。注册(/home/admin/Desktop/project/controllers/auth.js:26:30)(节点:13225)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下在异步函数内部抛出,或者拒绝未使用 .catch() 处理的承诺。(拒绝 ID:1)
控制器:
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const db = require('../config/db.config.js')
const User = db.user
const errorHandler = require('../utils/errorHandler')
module.exports.register = async function(req, res) {
const candidate = await User.findOne({
where: {
username: req.body.username
}
})
if (candidate) {
res.status(409).json({
message: 'This login is already taken. Try another.'
})
} else {
const salt = bcrypt.genSaltSync(10)
const password = req.body.password
const user = new User({
name: req.body.name,
username: req.body.username,
roles: req.body.roles,
photoSrc: req.file ? req.file.path: '',
password: bcrypt.hashSync(password, salt)
})
try {
await user.save()
res.status(201).json(user)
} catch(e) {
errorHandler(res, e)
}
}
}
楷模:
module.exports = (sequelize, Sequelize) => {
const User = sequelize.define('users', {
name: {
type: Sequelize.STRING(100),
required: true
},
username: {
type: Sequelize.STRING(40),
required: true,
unique: true
},
roles: {
type: Sequelize.STRING(100),
required: true
},
password: {
type: Sequelize.STRING,
required: true
},
photoSrc: {
type: Sequelize.STRING(200),
default: ''
}
});
return User;
}
原文由 user10493107 发布,翻译遵循 CC BY-SA 4.0 许可协议
您还需要将
await
应用于您的salt
和password
作业。像这样,
希望这可以帮助!。