存储在Mongo中的数组无法与具有相同长度和值的本机javascript数组进行深度断言比较

时间:2011-09-15 22:34:51

标签: javascript mongodb node.js assert mongoose

我在mongo中有一个用mongoose ORM定义的字段,如下所示:

state: {type: [Number], required: true }

如果我使用mongo控制台查看示例文档,状态看起来像

state: [ 1, 1, 1 ]

到目前为止,这么好。但对于同一文档而言,下面的断言失败了,这很奇怪:

assert.deepEqual state, [ 1, 1, 1 ]

无法弄清楚这是否是我在JS中的对象比较中缺少的东西,或者与mongo返回状态数组的方式有关。

1 个答案:

答案 0 :(得分:0)

MongoDB有一个错误,其中枚举了应该不可枚举的属性:

例如,一个值为:

的数组
[ '0', '1']
根据{{​​1}}

具有以下键:

Object.keys()

注意Mongo现在使用V8,它支持ES5,它能够通过Object.defineProperty()多年来创建不可枚举的属性。

正如另一张海报所提到的那样:

[ '0', '1', '_atomics', 'validators', '_path', '_parent', '_schema' ]