我正在尝试通过我的node.js应用程序将Mongoose用作MongoDB的ODM。我注意到,当我设计带有嵌入式文档的架构时,如果不向其添加值,它将在Mongo中存储一个空白数组“[]”。为什么是这样?我正在尝试将历史更改存储到记录中,而空白数组将意味着该更改删除了该值。这是一个示例架构。

schema.Client = new mongoose.Schema({
    name:{type:String, required:true},
    products:[{
        name:{type:String, index:true},
        startDate:Date,
        endDate:Date
    }],
    subdomain:{type:String, index:{unique:true}},
})

当我保存仅包含名称和子域的文档时,这就是生成的文档。
{
    "name": "Smith Company",
    "products": [],
    "subdomain": "smith"
}

为什么默认情况下会添加带有空白数组的产品,我该如何停止呢?

最佳答案

您可以通过定义如下所示的方案来解决:

products: {
  type: [{
    name:String,
    startDate:Date,
    endDate:Date
  }],
  default: undefined
}

关于node.js - Mongoose 为什么要添加空白数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12658152/

10-09 17:39