首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何防止此错误发生?(NODEJS Bcryptjs)

如何防止此错误发生?(NODEJS Bcryptjs)
EN

Stack Overflow用户
提问于 2022-10-28 19:04:58
回答 1查看 22关注 0票数 0

我在我的应用程序中创建了一个用户更新控制器,但是问题是,当在postman中测试这个控制器时,我不能仅仅发送我想要编辑的信息,而不必传递密码,密码是用bcryptjs异步呈现的。

错误:

代码语言:javascript
复制
Error: Illegal arguments: undefined, string
    at Object.bcrypt.hashSync (/home/pc/api_foodelivery/node_modules/bcryptjs/dist/bcrypt.js:189:19)
    at exports.update (/home/pc/api_foodelivery/src/controllers/UserController/UpdateUser.js:16:37)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
代码语言:javascript
复制
const db = require('../../models/index');

const bcrypt = require('bcryptjs');

exports.update = async (req, res) => {
    const { id } = req.params;
    const { firstName, lastName, email, password, phoneNumber } = req.body;
    try {

        const user = await db.User.findOne({ where: { id } });

        if (!user) {
            return res.status(401).json('User does not exist');
        }

        const hashPassword = bcrypt.hashSync(password, 8);

        await user.update({
            firstName,
            lastName,
            email,
            password: hashPassword,
            phoneNumber,
        });

        return res.status(200).json('User updated!');
    } catch (err) {
        return console.log(err);
    }
}

据我所知,发生此错误是因为我没有将任何东西传递给我的hashPassword,但是在更新我的数据库用户时,如何使它不是强制性的呢?

EN

回答 1

Stack Overflow用户

发布于 2022-10-29 04:23:52

代码语言:javascript
复制
const db = require('../../models/index');

const bcrypt = require('bcryptjs');

exports.update = async (req, res) => {
    const { id } = req.params;
    const { firstName, lastName, email, password, phoneNumber } = req.body;
    try {

        const user = await db.User.findOne({ where: { id } });

        if (!user) {
            return res.status(401).json('User does not exist');
        }

        // You need to check here if user wants to update password or not
        const updatedUser = {
            firstName,
            lastName,
            email,
            phoneNumber
        } // You may further check for every filed if not undefined here

        if(password && password !== "") {
            const hashPassword = bcrypt.hashSync(password, 8);
            updatedUser.password = hashPassword
        }


        await user.update(updatedUser);

        return res.status(200).json('User updated!');
    } catch (err) {
        return console.log(err);
    }
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74239856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档