[英]How to get array from localstorage in Firebase Cloud Functions?
[英]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.