更新数据库对象中的特定字段 | Axios、Redux 表单
Update specific field in database object | Axios, Redux forms
我有一个名为 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
对象中的特定字段。如果需要,我可以发送更多代码。
感谢阅读!
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!' });
});
});
});
我有一个名为 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
对象中的特定字段。如果需要,我可以发送更多代码。
感谢阅读!
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!' });
});
});
});