[英]Cloud Functions for Firebase: how to read data from Database synchronously?
我使用Cloud Functions for Firebase構建HTTP端點。 在此端點內部,我嘗試通過此方法同步從Firebase Realtime數據庫讀取一些數據:
function getSomethingFromDbSynchronously (currency) {
return new Promise((resolve, reject) => {
var db = admin.database();
var ref = db.ref("someref");
ref.orderByChild("somechild").equalTo("something").once("value", function (snapshot) {
resolve(snapshot);
});
});
}
但這對我不起作用。 我的API路由會在向數據庫的請求結束之前通過第一個return語句返回。 我做錯了什么?
代碼看起來不錯:您正在創建一個新的諾言,並從getSomethingFromDbSynchronously()
返回它。 但是,調用getSomethingFromDbSynchronously()
的代碼將需要等待promise解析,例如:
getSomethingFromDbSynchronously("currency").then(function(snapshot) {
console.log(snapshot.val());
});
盡管您可以研究新的async
和await
關鍵字,但無法使此同步,這只是使上面的內容看起來像同步發生一樣。
請注意,您的代碼比所需的時間更長。 由於once()
已經返回了一個承諾,因此您最好直接返回該承諾:
function getSomethingFromDbSynchronously (currency) {
var db = admin.database();
var ref = db.ref("someref");
return ref.orderByChild("somechild").equalTo("something").once("value");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.