簡體   English   中英

如何從Firebase數據庫獲取值並將其分配給Firebase Cloud Functions中的值?

[英]How to get a value from Firebase Database and assign it to a value in Firebase Cloud Functions?

因此,我將firebase用作演示應用程序的后端,我相當喜歡堆棧,但是我掛了一個問題,我不知道如何從數據庫中檢索值(我已經有鑰匙就好了)。
簡而言之,我是從一台設備發送信息,該信息包含它試圖連接到Firebase功能的另一台設備的“友好名稱”。 函數代碼如下所示:

exports.connectMe = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
    admin.database().ref('calls/' + req.body.id + '/').set({
        target: req.body.target,
        caller: req.body.caller,
        time: req.body.time
    });

    const target = req.body.target;
    console.log(`target: ${target}`);
    const targetCall = admin.database().ref(`tokens/${target}/token`);
    console.log(targetCall);
    // const targetValue = targetCall.val();
    res.status(200).send("Thanks For The Call!");
    });    
});

變量targetCall正確指向了我要訪問的數據庫條目,但是我無法提取我一生的值。 必須將位於admin.database.ref的令牌放置在http請求中。 我如何獲得價值? 注釋掉的代碼顯示了我想將其存儲在其中的變量,但是我知道.val()不是引用方法。
作為記錄,將admin設置為require('firebase-admin'); 在代碼的前面。

您需要按照文檔中的說明調用once()函數once()

targetCall.once("value", function(data) {
  const targetValue = data.val();
  res.status(200).send("Thanks For The Call!");
});

您非常接近使數據庫查詢生效。

看一下Firebase文檔 它說明了如何訪問結構化數據。

exports.connectMe = functions.https.onRequest((req, res) => {
    cors(req, res, () => {
        const callRef = admin.database().ref('calls/' + req.body.id + '/').set({
            target: req.body.target,
            caller: req.body.caller,
            time: req.body.time
        });

        const target = req.body.target;
        console.log(`target: ${target}`);

        const takenRef = admin.database().ref(`tokens/${target}/token`)
            .once('value');

        Promise.all([callRef, takenRef])
            .then(results => {
                const snapshot = results[1]; // Promise of `takenRef`
                console.log(snapshot.val()); // This is the data from the database...

                res.status(200).send("Thanks For The Call!");
            });
    });    
});

看到更新的代碼,我在查詢中添加了.once('value').then(snapshot ,您可以通過它訪問數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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