node.js - 仅更新以 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 中发送的内容?
解决方案
最后,我用这段代码解决了这个问题:
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 });
推荐阅读
- php - 无法按属性访问集合 Laravel 5.8
- html - 如何在 rmarkdwn html 中进行分页?
- node.js - 用于 QR 码的 Google Vision API 不在移动平台上
- java - 我们如何在 RecyclerView 中处理来自多个项目视图的点击?
- excel - 排除多个组合框中的双重输入,但允许除第一个之外的空框
- javascript - javascript中hypen后的字符串大写
- r - 我应该如何处理多项选择/响应(检查所有应用)数据?
- c++ - 如何从 sql 数据库获取记录到 char 数组或字符串或整数?
- c# - 从特定文件夹中获取一个 Json 文件并序列化它
- react-native - 无法通过appium识别模态