javascript - 如何使用 node.js 和 sequelize 更新对象中的值

标签 javascript mysql node.js sequelize.js

我想更新对象中的值(missions.status 和missions.success),
但我不知道如何处理它。

"missions": {
   "missions": [
      {
       "week": 1,
       "status": "",
       "mission": "do something",
       "success": ""
      }
    ]
 }


我试着喜欢这个。

//success.js

router.put('/:id/result', async (req, res, next) => {
  const status = req.body.missions.missions[0].status;
  const success = req.body.missions.missions[0].success;
  try {
    const result = await models.User.findOne({
      attribute: ['missions'],
      where: {
        id: req.params.id,
      },
    });

    const data = {
      result: result,
    };
    let originalData = data.result.dataValues.missions.missions[0];
    let weekdata = { status: status, success: success };
    let resultData = Object.assign(originalData, weekdata);

    res.send({
      data: resultData,
      message: 'good status changed',
    });
  } catch (error) {
    console.log(error);
    res.sendStatus(400);
  }
});


它是 req.body 和 response,看起来它有效,但不会在数据库中更新。我不知道如何保存它。

//req.body
{
"missions": {
    "missions":[
		{
			"status": "no",
			"success":"success"
		}
	  ]
    }
  }


// res.send
{
  "data": {
      "week": 1,
      "status": "no",
      "mission": "do something",
      "success": "success"
  },
  "message": "good status changed"
}

最佳答案

您没有为您的模型调用 update 所以这就是为什么您不会在数据库中获得任何更改的原因。
试试这个:

await models.User.update(weekdata, {
      where: {
        id: req.params.id,
      },
    });

关于javascript - 如何使用 node.js 和 sequelize 更新对象中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62151113/

相关文章:

javascript - React 状态已设置,但在渲染时看起来它是空的

javascript - 单击任何 li 元素

mysql - 由于 LOCK 无法查看表

mysql - SQL 语法求和与计数

javascript - 如何同步执行javascript函数

javascript - Node.js:集群中具有不同代码的工作人员?

node.js - 当 Node.js Express 应用程序作为由 serverless-http 包装的 Lambda 函数运行时出现路由问题?

php - 如何设置从另一个页面通过 AJAX 调用的下拉列表的默认值?

javascript - 获取对 JavaScript 中 eval() 期间创建的局部变量的引用

mysql - 将 PHP 条件语句转换为 MySQL if-then 条件语句