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

标签 javascript arrays node.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 是一个带有类别名称的字符串。在我的数据库上,我可以看到我已经成功添加了对象:

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: []
    },
];

因为在某些时候空数组已从对象中删除。就像我说的,我确实在前端解决了这个问题,所以错误 Jade 被抛出已得到解决,但我仍然觉得奇怪的是 products: []正在从文档中删除。

我是 MongoDb 和 node 的新手,更不用说我也是 JS 的新手,所以这很可能是我不知道的一个特性。

最佳答案

将空数组传递给 Mongo 时,它们被解释为空文档,{}。 Zend Json 编码器会将它们解释为空数组 []。我知道无法判断哪个是正确的。 如果出现空数组,请尝试发布为

数组[null]; 而不是 Array[];

这会很好用

关于javascript - 如何使用 js 将空数组保存到 mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20032043/

相关文章:

javascript - 如何找到原因 [$injector :modulerr] error in AngularJS?

javascript - 在 setTimeout 中传递 this.method 不起作用?

javascript - Node/Express.js - 数组元素正在消失

node.js - EISDIR : illegal operation on a directory, 读取 + Nodemailer 图像附件

javascript - Express:在 json() 之后调用 next() - 中间件

node.js - 知道 express 应用程序是否作为 firebase 云函数运行

javascript - 如何将 "k%C3%B6nnen"转换为 können"

javascript - 在 JavaScript 中计算 beta 累积概率密度的倒数

java - 如何检查 ArrayDeque 的索引是否为空?

javascript - 解析嵌套数组对象,并创建一个新数组