如何使用js将空数组保存到mongodb中

基本上我得到了我的应用程序运行,但我坚持一个问题:如果我传递一个包含一个空数组要保存的对象,该数组不会保存到数据库。 我不知道这是在js或mongo驱动程序中的问题,但为了保存空数组,我需要传递数组,如下所示: products: ['']

这是我的mongo文档的结构:

 _id: ObjectId(...), name: 'String', subcategories: [ { subcategory: 'string', products: [ { name: 'string' price: integer } ] } ] 

所以在我的前端,我通过ajax调用将新对象推入子类别数组来获取整个文档。 新对象如下所示:

{subcategory:'string', products:['']}

这工作正常,直到我需要在数组中插入一个新的对象:因为我抓住了整个对象,推新对象到数组,前一个看起来像这样:

{subcategory: 'string'}

在这个过程中,失去了对products:[]数组的提及。

我怎样才能解决这个问题? 我需要能够在我的对象中有空的数组。

编辑

我在前端做了什么:用$.get返回了整个对象:

 var obj = _id: ObjectId(...), name: 'String', subcategories: [ { subcategory: 'Subcategory1', products: [ { name: 'string' price: integer } ] } ]; 

然后在前端我已经推出了新的对象类别在子类别数组内:

 data.subcategories.push({subcategory: 'Subcategory2', products: ['']}) 

其中subcat是类别名称的string。 在我的分贝,我可以看到,我已经成功地添加了对象:

 var obj = _id: ObjectId(...), name: 'String', subcategories: [ { subcategory: 'Subcategory1', products: [ { name: 'string' price: integer } ] }, { subcategory: 'Subcategory2' products: [] } ]; 

问题是当我想添加另一个子类别,前一个返回空:

 var obj = _id: ObjectId(...), name: 'String', subcategories: [ { subcategory: 'Subcategory1', products: [ { name: 'string' price: integer } ] }, { subcategory: 'Subcategory2' }, { subcategory: 'Subcategory3' products: [] }, ]; 

因为在某些时候,空数组被从对象中移除。 就像我说的那样,我在前端修复了这个错误,所以错误的玉被抛出了,但是我仍然发现这个products: []被从文档中删除了。

我是MongoDb和节点的新手,更不用说我也是JS的新手,所以这可能是我不了解的一个特性。