如果值未定义则更新-猫鼬

时间:2020-08-18 16:19:19

标签: node.js mongodb mongoose

如果有效负载中的键应该具有某个值(不是未定义或任何假值),我想更新该值。我不想检查使代码冗长的每个值。

await Parent.findByIdAndUpdate(
    payload.TID,
    {
      healthTests: payload.foo,
      otherHealthtest: payload.bar,
    },
    { new: true, fields: { updatedAt: 0, createdAt: 0, __v: 0 } },
  );

1 个答案:

答案 0 :(得分:1)

您可以使用Object.entires()来迭代键和值并构建updateObj

let updateObj = {};

for(let [key, value] of Object.entries(payload)){
    if(value !== undefined){
        updateObj[key] = value;
    }
}

await Parent.findByIdAndUpdate(
    payload.TID, updateObj,
    { new: true, fields: { updatedAt: 0, createdAt: 0, __v: 0 } },
);

示例:

let payload = { foo: 1, bar: undefined, baz: 3};
let updateObj = {};

for(let [key, value] of Object.entries(payload)){
    if(value !== undefined){
        updateObj[key] = value;
    }
}

console.log(updateObj);