簡體   English   中英

Firebase的Cloud Functions:如何訪問我剛從Firebase獲得的陣列?

[英]Cloud Functions for Firebase: How to access an array I have just got from firebase?

我正在從Firebase中下載功能,無法解決如何訪問已下載的陣列的問題。

這是我的代碼:

exports.messageAdded = functions.database.ref('cities/barcelona/pickUp/gamesDetailed/{gameId}/wal/{messageId}').onWrite(event => {


     const getPlayer1sIdPromise = admin.database().ref(`/cities/barcelona/pickUp/gamesDetailed/gameId/pla1`).once('value');
     const getPlayer2sIdPromise = admin.database().ref(`/cities/barcelona/pickUp/gamesDetailed/gameId/pla2`).once('value');


     const getInstanceIdPromise = admin.database().ref(`/users/usersDetailed/${receiverUid}/deviceID`).once('value');

     return Promise.all([getPlayer1sIdPromise, getPlayer2sIdPromise]).then(results => {
        const player1Ids = results[0].val();

       // PROBLEM IS HERE

        console.log(player1Ids);
        console.log(player1Ids[0]);
        console.log(results[0]);
        console.log(results[0].val()[0]);


        Promise.all([getInstanceIdPromise, getSenderUidPromise]).then(results => {
             const instanceId = results[0].val();
             const sender = results[1];

             const payload = {
             notification: {
             title: senderName,
             body: messageText,
             icon: sender.photoURL
             }
             };

             admin.messaging().sendToDevice(instanceId, payload)
             .then(function (response) {
                   console.log("Successfully sent message:", response.results);

                   console.log("Successfully sent message:", response);
                   })
             .catch(function (error) {
                    console.log("Error sending message:", error);
                    });
             });

       });

  });

在代碼中,我指出了問題所在。 在那里,我無法解決如何訪問player1Ids的問題。 我回來的東西應該是一個數組,我想訪問第一個值,但我不知道該怎么做。

這完全取決於沒有JavaScript的經驗,如果這是一個重復的問題,我深表歉意,但是我看了一下,但似乎找不到,但是我對搜索的內容一無所知。

這是我正在使用的dataStructure:

  root/
  |___ ...
  |      |___ pla1
  |      |       |___ USER_ID_HERE: userName
  |      |       |___ ...
  |      |___ pla2
  |              |___ USER_ID_HERE: userName
  |              |___ ...

在我的Firebase數據庫中肯定有一個數組,因此希望我能找到如何訪問它的方法。

提前致謝。

從這里我可以看到,您的代碼中存在一些問題。 您是否在Firebase控制台中檢查了錯誤消息? 這可能會給我們一些很好的提示。

首先,我看不到代碼中定義的getPlayer2sIdPromise ,但似乎您正在Promise.all()調用中使用它。

這可能就是您的代碼無法繼續執行的原因。

無論如何,您都可以這樣做(我刪除了代碼的一些部分只是為了關注重要部分):

    exports.messageAdded = functions.database.ref('cities/barcelona/pickUp/gamesDetailed/{gameId}/wal/{messageId}').onWrite(event => {

         const getPlayerOneID = admin.database().ref(`/cities/barcelona/pickUp/gamesDetailed/gameId/pla1`).once('value');

          return Promise.all([getPlayerOneID]).then(results => {

              const playerOneIdSnapshot = results[0];

              // ...And then you can access the value like so :

              const playerOneIdSnapshotValue = playerOneIdSnapshot.val();

          });

   });


現在,從我可以看到的數據庫結構如下:

root/
|___ ...
|      |___ pla1
|              |___ userId: USER_ID_HERE
|              |___ ...

在這種情況下,您可以這樣訪問用戶ID:

const userID = playerOneIdSnapshotValue.userId;

根據您如何設置數據庫,可能會有所不同!

讓我知道它是否有效:)

暫無
暫無

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

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