我正在使用Couchbase nodeJS SDK。为了查询我必须调用bucket.query("SELECT ...", function(err, rows){console.log("query's result received")})
等待查询结果
我想运行查询顺序,如:
- 运行查询的结果的
- 工作
- 运行查询B关于结果B
- 工作
- ...
- 在所有结果得到满足并处理后继续处理
甚至更好它可能是
- 运行由一个查询
- 的结果一个工作,因为他们正在收讫
- 继续所有结果已收讫和处理后
问题是我不知道如何等待所有查询完成然后继续。我承诺诺言,但我对nodeJS是新手,我不确定我是否正确使用了它们,也许有人可以指出我正确的方向?
我看到异步/等待功能在节点中可用,但我没有设法使其工作。
任何帮助将是明显的!
编辑
我试图用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
关键字。
有关我如何实现预期行为的任何想法? 谢谢!
你能检查我的编辑?我尝试了你提出的建议,但它看起来不像我期望的那样工作。 – MHogge
为了使用'await',你的函数应该是'async',这就是为什么你有一个错误,你也需要节点7.6+,检查我的答案中的链接 – notgiorgi
我误解了关于'async'的部分!我认为被调用的函数应该是异步的,但它应该是调用函数。谢谢 ! – MHogge