存储在Mongo中的数组无法与具有相同长度和值的本地javascript数组进行深度断言比较
Array stored in Mongo fails deep assert comparison to native javascript array with same length and values
我在mongoose中定义了一个字段,像这样:
state: {type: [Number], required: true }
如果我用mongo控制台看一下示例文档,状态看起来像
state: [ 1, 1, 1 ]
到目前为止,一切顺利。但是奇怪的是,对于同一个文档,下面的assert失败了:
assert.deepEqual state, [ 1, 1, 1 ]
无法确定这是我在JS中缺少的对象比较,还是与mongo返回状态数组的方式有关。
MongoDB有一个错误,应该是不可枚举的属性被枚举:
例如,值为
的数组:[ '0', '1']
根据Object.keys()
, 有以下键:
[ '0', '1', '_atomics', 'validators', '_path', '_parent', '_schema' ]
注意Mongo现在使用V8,它支持ES5,它已经有能力通过Object.defineProperty()创建不可枚举的属性很多年了。
正如另一张海报提到的:
var fixMongoArray = function(array) {
return Array.prototype.slice.call(array)
}
相关文章:
- 如何遍历包含对象的数组-javascript
- 保存数组javascript
- 查找数组javascript中包含的元素类型
- 算法:从数组(javascript/angular)中按当前日期获取上一个和下一个事件
- 从多维数组javascript中提取特定值
- 如何在数组javascript中选择伪随机值
- 拆分字符串数组(JavaScript)后未定义
- 从数组JavaScript中删除并返回最后n个项的最快方法
- 使用条件for循环更新数组-Javascript
- 从数组javascript创建新对象
- 用数组(javascript)中的值替换regex捕获
- 从数组[Javascript]的总长度中减去一个干净的数字
- 将一个字符串数组解析为一个新的数组javascript
- 如何将对象转换为对象数组javascript
- 赢得't循环数组javascript
- 从不同的数组 JavaScript 中获取值
- 多维数组 JAVASCRIPT 出了点问题
- 可以't分配给一个对象数组javascript
- 比较数组JavaScript中的对象
- 如何完成缺少(连续)元素的数组|Javascript