gpt4 book ai didi

javascript - Nodejs 与sequ​​elize 返回错误运行更新

转载 作者:行者123 更新时间:2023-12-02 22:08:00 24 4
gpt4 key购买 nike

我在用户 Controller 中有这个更新功能:

  async update(req, res) {
const schema = Yup.object().shape({
name: Yup.string().required(),
email: Yup.string().email(),
oldPassword: Yup.string().min(6),
password: Yup.string()
.min(6)
.when('oldPassword', (oldPassword, field) =>
oldPassword ? field.required() : field
),
confirmPassword: Yup.string().when('password', (password, field) =>
password ? field.required().oneOf([Yup.ref('password')]) : field
),
});

if (!(await schema.isValid(req.body))) {
return res.status(400).json({ error: 'Validação de entrada falhou' });
}
const { email, oldPassword } = req.body;
console.log(email);
const user = await User.findByPk(req.userId);
if (email && email !== user.email) {
const userExists = await User.findOne({ where: { email } });

if (userExists) {
return res.status(400).json({ error: 'E-mail já cadastrado' });
}
}

if (oldPassword && !(await user.checkPassword(oldPassword))) {
return res.status(401).json({ eror: 'As senhas não são iguais' });
}

const { id, name, provider } = await User.update(req.body);
return res.json({
id,
name,
email,
provider,
});
}

运行 Node js 时返回以下错误警告,提示我缺少参数:

(node:2608) UnhandledPromiseRejectionWarning: AssertionError [ERR_ASSERTION]: Missing where attribute in the options parameter
at Function._optionsMustContainWhere (D:\Estudos\Rocketseat\BootCamp\Módulo 02\backend-gobarber2\node_modules\sequelize\lib\model.js:3427:5)
at Function.update (D:\Estudos\Rocketseat\BootCamp\Módulo 02\backend-gobarber2\node_modules\sequelize\lib\model.js:3053:10)
at update (D:\Estudos\Rocketseat\BootCamp\Módulo 02\backend-gobarber2\src\app\controllers\UserController.js:95:57)

有人可以告诉我我做错了什么吗?

  • bcryptjs:2.4.3
  • express :4.17.1
  • jsonwebtoken:8.5.1
  • 乘法器:1.4.2
  • 页数:7.17.0
  • pg-hstore:2.3.3
  • Sequelize :5.21.3
  • 是的”:0.28.0

最佳答案

您忘记了 where 属性。用户将被更新,但是哪个用户?您需要在这里进行更改;

const { id, name, provider } = await User.update(req.body);

像这样;

const { id, name, provider } = await User.update(req.body, {
where: {? : ?}
});

关于javascript - Nodejs 与sequ​​elize 返回错误运行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59654670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com