【问题标题】:Update specific field in database object | Axios, Redux forms更新数据库对象中的特定字段 | Axios、Redux 表单
【发布时间】:2018-01-15 18:11:40
【问题描述】:

我有一个名为item的对象:

我还有一个 PUT 请求,可以更改 item 中的一些值。有些值在对象内部,有些则不在。例如,我需要能够更改 settings obj 中的值。目前我的 PUT 请求如下所示:

export function updateSettings(id, item) {
  return dispatch => {
    axios
      .put(`${settings.hostname}/cookie/${id}`, item)
      .then(res => {
        dispatch({
          type: 'COOKIES_UPDATED',
          payload: {
            item
          }
        })
      })
      .catch(err => console.log(err))
  }
}

当记录 res.data 时,我只得到这个: _id: "598960d891202556389cxd"

后端处理 PUT 请求的方式如下:

r.put('/cookies' + '/:id', async (ctx, next) => {
  console.log(key)
  await ctx.db
    .replaceOne({ _id: objectId(ctx.params.id) }, ctx.request.body)

  ctx.body = { _id: ctx.params.id }
  console.log(ctx.request.body)
})

我正在使用 Redux 表单提交我的输入字段,我的 onSubmit 看起来像这样:

onSubmit={handleSubmit(props => {
  // props is the updated form values
  onSubmit(id, props)
})}

这会将新值发送到服务器并更新数据库,但它也会与我的 item 对象的结构混淆。一些字段被删除了,所以我得到了使用diff.Diffhttps://github.com/srcagency/object-diff)的提示,目的是仅将更改发送到服务器,但在我的情况下,它不会更新任何内容. Item 看起来完全一样。

所以这是我的问题,我不知道如何更新我的item 对象中的特定字段。如果需要,我可以发送更多代码。

感谢阅读!

【问题讨论】:

  • 为什么你只发送 axios(ajax) 代码而不是你的服务器更新文件?并向我们​​展示 item 变量的样子。
  • @RahmatAligos 很抱歉,我会添加这两个。
  • 我已经更新了 @RahmatAligos 先生
  • 您想更新 item.settings 对象吗?确保 .put(${settings.hostname}/locks/${id}, item) 已定义,例如:var item = {settingName: 'Seting Name'}

标签: javascript server put redux-form axios


【解决方案1】:
router.route('/cookies/:id')
.put(function(req, res) {

    Items.findById(req.params.id, function(err, item) {

        if (err)
            res.send(err);

        // if you want update all settings object
        item.settings = req.body;
        // if something on settings field, item.settings.field1 = req.body.field1
        item.save(function(err) {
            if (err)
                res.send(err);

            res.json({ message: 'Your item updated!' });
        });

    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 1970-01-01
    • 2018-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多