首页 > 解决方案 > 如何修复 Model.findByIdAndUpdate() 返回属性 null

问题描述

我用两个参数更新我的类别:标题和描述。如果我同时填写标题和描述 => 这是真的。如果我只填写title => category.description = null。如果我只填写 title => category.description = old description 值,我想要。

我怎样才能做到这一点?

let { title, description } = updatedCategory
let category = await Category.findByIdAndUpdate(id, {
    title,
    description,
    date: Date.now()
})

标签: javascriptmongoose

解决方案


您可以有条件地添加属性

const { title, description } = updatedCategory

const query = {
  ...(title && { title }),
  ...(description && { description }),
  date: Date.now(),
}

const category = await Category.findByIdAndUpdate(id, query)

推荐阅读