0

问题是:如何访问从 nedb 'find' 命令返回的多个文档。

了解我在 nodejs 中使用 nedb 获得的一些见解。

关于通过 nedb find 和访问键值对返回的文档:认为这会起作用:docs.current.temp_f 但它没有。这有效: docs[0].current.temp_f 确实有效。

背景和细节:我是JavaScript,nodejs,nedb的新手,从未使用过mongodb,但了解nedb有类似的API。

我发帖的原因是:我经常使用这个网站,但找不到我的问题的答案。我终于自己弄清楚了,并将其发布在这里,以便我可以回馈社区。

我正在使用他们的 API 访问 Wunderground。效果很好。然后我使用 nedb API 的“插入”命令将结果推送到 nedb。这里和其他地方有多个可用的示例。

使用 nedb API 的 find 命令,我能够检索我的数据。我可以使用 console.log() 将其打印出来。同样,这里和其他地方有多个示例。

Wunderground 返回一个 JSON 对象(如果以这种格式请求),格式为 {response:{...some data}, current_observation:{...some data...temp_f...some more data}},它可以插入 nedb 数据库。

使用 nedb API 'find' 命令(例如,

db.find({},function(err,docs) {console.log(docs);} 我能够打印出我的数据。但我的愿望是只获得一些键:值对,而不是整个结构。我认为像docs.current_observation.temp_f这样的东西可以解决问题,但这总是“未定义”并导致错误。

我不明白,因为我是这个领域的新手,所以nedb 正在返回一组数据;在这种情况下是一组 JSON 对象,因为我插入的是 JSON 对象。我从未在 nedb 的 npmjs.com 网站上的任何地方看到过这个。所以我想提醒像我这样缺乏这方面知识的人。

以下是最终获得 key:value 信息的方法: console.log("temp_f: ", docs[0].current_observation.temp_f);
我在哪里访问数组元素 0。

当然,这可能会以类似 for/in 循环的形式结束。

如果您知道的话,我很想看到有关从返回的结果集中检索 key:values 的任何其他想法。

//Thought this would work, but it doesn't
docs.current_observation.temp_f
//but this does, where x is a value to record
docs[x].current_observation.temp_f
4

1 回答 1

2

简单的答案是使用 mongo 的查询语言和 find 方法返回匹配文档的数组,然后操作对象数组以获得所需的值。在迭代数组时使用 for of 而不是 for in。或者使用 map、filter、forEach 和 reduce 数组方法来操作数组数据。

于 2015-12-11T13:15:08.990 回答