Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有sequelize的Nodejs在运行更新时返回错误_Javascript_Node.js_Database_Api_Sequelize.js - Fatal编程技术网

Javascript 带有sequelize的Nodejs在运行更新时返回错误

Javascript 带有sequelize的Nodejs在运行更新时返回错误,javascript,node.js,database,api,sequelize.js,Javascript,Node.js,Database,Api,Sequelize.js,我在用户控制器中有此更新功能: 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) .w

我在用户控制器中有此更新功能:

  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
  • 快递:4.17.1
  • jsonwebtoken:8.5.1
  • 穆特:1.4.2
  • pg:7.17.0
  • pg hstore:2.3.3
  • 续集: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: {? : ?}
});