【发布时间】:2017-10-30 12:48:12
【问题描述】:
我正在使用 Couchbase nodeJS SDK。要进行查询,我必须致电bucket.query("SELECT ...", function(err, rows){console.log("query's result received")})
我想按顺序运行查询:
- 运行查询 A
- 处理结果 A
- 运行查询 B
- 处理结果 B
- ...
- 在收到并处理所有结果后继续
甚至更好
- 运行所有查询
- 在收到结果时一一处理
- 在收到并处理所有结果后继续
关键是我不知道如何在继续之前等待所有查询完成。我坚持承诺,但我是 nodeJS 的新手,我不确定我是否正确使用它们,也许有人可以指出我正确的方向?
我看到 node 中提供了 async/await 功能,但我也没有设法使其工作。
任何帮助将不胜感激!
编辑
我尝试使用couchbase-promises,但仍然没有得到我期望的行为。这是我所做的:
console.log("start");
bucket.queryAsync(N1qlQuery.fromString('SELECT * FROM DATA_BUCKET WHERE type="BOOK"'))
.then(function(rows){console.log("success")})
.catch(function(err){console.log(err)})
console.log("end");
但输出显示
start
end
success
我想要的是
start
success
end
我也尝试了const rows = await bucket.queryAsync("SELECT...),但我得到了Unexpected identifier错误。我在这个SO post 上发现这意味着queryAsync 方法没有async 关键字。
知道如何实现我的预期行为吗? 谢谢!
【问题讨论】:
标签: javascript node.js promise async-await couchbase