【发布时间】: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.Diff(https://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