Node.js 仅更新JSON中发送的字段
我有一段代码:Node.js 仅更新JSON中发送的字段,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,我有一段代码: // Update a card router.patch('/:id', async (req, res) => { try { const card = await Card.findByIdAndUpdate( {_id: req.params.id}, { $set: { title: req.body.ti
// 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,那么只会更新标题,问题是如果我使用上面的代码执行此操作,因为缺少描述,那么描述将更新为null。有没有办法只更新我在JSON中发送的内容?最后,我用这段代码解决了这个问题:
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 });
最后,我用这段代码解决了这个问题:
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 });