首页 > 解决方案 > 如果对象为空,猫鼬不保存

问题描述

如何不插入空对象,即{ }在 Mongoose 模式中。

假设 Mongoose 集合如下

let testCollection = mongoose.Schema({
  someData:{
    type: []
  }

在Mongoose集合中插入如下

let emptyObj = { }

new testCollection({
 someData: emptyObj
}).save()

如果这段代码执行,猫鼬集合会是这样的

 db.somecollection.find().pretty()

    {
     "someData" : [
       { }
      ]
    }

仅当对象不为空时,如何在此数组中插入对象

标签: node.jsmongodbmongoose

解决方案


如果没有其他字段,可以使用三元组来完成:

const isEmpty = !obj || Object.keys(obj).length;

new testCollection(isEmpty ? { someData: emptyObj } : {}).save()

否则,这可以通过对象扩展和短路评估来完成,以避免重复和额外的临时变量:

new testCollection({
  someField: 'value',
  ...(isEmpty || { someData: emptyObj })
}).save()

推荐阅读