簡體   English   中英

Firebase的Cloud Functions:如何從數據庫同步讀取數據?

[英]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());
});

盡管您可以研究新的asyncawait關鍵字,但無法使此同步,這只是使上面的內容看起來像同步發生一樣。

請注意,您的代碼比所需的時間更長。 由於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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM