更新数据库对象中的特定字段Axios,Redux形式

时间:2017-08-08 08:56:22

标签: javascript server put redux-form axios

我有一个名为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对象中的特定字段。如果需要,我可以发送更多代码。

感谢阅读!

1 个答案:

答案 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!' });
        });

    });
});