【发布时间】:2018-07-15 21:43:40
【问题描述】:
我正在尝试在 Mongo 中索引各种 JSON 对象。有时,JSON 对象在某处有一个包含 . 的键,这让 Mongo 抱怨:
MongoError: The dotted field 'foo (e.g. bar)' in 'key.0.prop foo (e.g. bar)' is not valid for storage.
撇开这些数据不应该有这种键不谈,我想通过删除包含点的文本来调整带有点的键来临时处理这个问题。但是,这些键可以在对象中的任何位置,这需要同时遍历和修改键。例如,
{
"foo": {
"foo (e.g. bar)": "baz"
},
"a": "b"
}
会变成
{
"foo": {
"foo": "baz"
},
"a": "b"
}
基于我指定的一些函数transform(badKey)。
遍历 Javascript 对象并根据某些标准修改键的最简单/最可靠的方法是什么?请注意,某些键可能嵌套了好几层,因此简单的键值迭代在这里不起作用。指向提供此功能的库的指针会很棒。
【问题讨论】:
-
如果你对 lodash 持开放态度,你可以试试这个深度步行 stackoverflow.com/a/35056190/2103767
标签: javascript json mongodb iteration traversal