【发布时间】:2016-07-19 08:55:44
【问题描述】:
高级
我是 JS 和 Node.js 的新手。我正在开发一个应该返回状态值的 API 端点。要计算状态值,我需要进行两个连续的 mongo 查询,其中第二组查询依赖于第一个查询。第二组查询将为我在第一个查询中找到的每个值提供一个状态,我将根据一些逻辑从中选择一个。在 NodeJS 中最好的方法是什么?
细节
这是我第一次尝试的部分内容。
function getItemStatus(key, value, callback) {
MongoClient.connect(mongo_url, function(err, db) {
if (err) { return console.dir(err); }
db.collection('status', function(err, coll) {
if (err) { return console.dir(err); }
coll.distinct("_id.metric", function(err, metrics) {
if (err) { return console.dir(err); }
console.log('metrics : ', metrics);
_.foreach(metrics, function(metric) {
var query = {"_id": {
"$gte" : {key: key, value: value, created: new Date("1800-01-01T00:00:00"), metric : metric},
"$lte" : {key: key, value: value, created: new Date("2100-01-01T00:00:00"), metric : metric}}};
coll.find(query, {sort: {"_id.created": -1}, limit: 1})
我建立连接,使用不同的查询查询一组指标值。然后,对于每个指标,我想询问最新状态。理想情况下,我希望拥有整个状态集,这样我就可以编写一个函数来获取这个状态集并决定将返回哪个状态。我的问题是将状态传递回“链上”,以便我可以处理状态集。
在同步情况下,我会简单地写这样的东西
val metrics = getDistinctMetrics(key, value)
val statuses = metrics.map(getStatusForMetric)
val status = filterStatuses(statuses)
如何在 JavaScript/NodeJS 中完成此操作?
UPDATED 强调第一个查询将在第二步中触发 几个 个查询,即第一个查询找到的每个结果都有一个。
【问题讨论】:
-
对 thois 的出色回答在此线程 stackoverflow.com/questions/6622746/…
标签: javascript node.js mongodb