我正在使用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