我有一个名为item
的对象:
我还有一个PUT请求,可以更改settings
内的某些值。有些值在对象内部而其他值不是。一个例子是我需要能够更改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))
}
}
obj中的值。目前我的PUT请求如下所示:
res.data
当记录_id: "598960d891202556389cxd"
时,我只能得到这个:
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)
})
以下是后端处理PUT请求的方式:
onSubmit
我使用Redux表单提交输入字段,我的onSubmit={handleSubmit(props => {
// props is the updated form values
onSubmit(id, props)
})}
看起来像这样:
item
这会将新值发送到服务器并更新数据库,但它也会混淆我的diff
对象的结构。某些字段已被删除,因此我获得了使用Diff
的提示。Item
' s(https://github.com/srcagency/object-diff)的目的是仅在服务器发送更改时发送,但是我的情况是,它不会更新任何东西。 item
看起来非常相似。
所以有我的问题,我不知道如何更新forall
对象中的特定字段。如果需要,我可以发送更多代码。
感谢阅读!
答案 0 :(得分: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!' });
});
});
});