首页 > 解决方案 > 仅更新以 JSON 格式发送的字段

问题描述

我有这段代码:

// Update a card    
router.patch('/:id', async (req, res) => {    
    try {    
        const card = await Card.findByIdAndUpdate(        
            {_id: req.params.id},    
            { $set: {    
                title: req.body.title,    
                description: req.body.description}},    
            { new: true });    
        res.json(card);    
    } catch (error) {    
        res.status(404).json({message: error});    
    }    
}); 

我希望能够单独更新标题和描述,这意味着如果我发送一个仅包含标题的 JSON,那么只会更新标题,问题是如果我使用上面的代码执行此操作,因为缺少描述然后描述将更新为空。有没有办法只更新我在 JSON 中发送的内容?

标签: node.jsmongodbexpressmongoose

解决方案


最后,我用这段代码解决了这个问题:

const $set = {};
    if(req.body.name)
        $set.name = req.body.name;
    if(req.body.background)
        $set.background = req.body.background;
    const board = await Board.findByIdAndUpdate(
        {_id: req.params.id},
        { $set },
        { new: true });

推荐阅读