![](/img/trans.png)
[英]How do you pass authentication from an RTK Query to firebase functions to access realtime database?
[英]How do you do a forEach loop on an array containing data retrieved from firebase database JavaScript
這是我的數據庫結構:
我正在嘗試編寫一個 firebase function 遍歷每個理發店,並檢索他們所有的理發師。
在下面的代碼中,我已成功檢索到所有理發店名稱,並將它們存儲在一個數組中,該數組在控制台上的記錄如下:
然而,當我嘗試進入我的 function 的下一階段時,“barberShopArray.forEach((key)”中的代碼都沒有執行,我不知道為什么。即使是“console.log(key)”也沒有工作。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var database = admin.database();
exports.addTimeNod2 = functions.pubsub.schedule('every 24 hours').onRun((context) =>
{
var num = 1;
let barberShopArray = [];
return database.ref('/BarberShops/').once("value").then((snapshot) =>
{
snapshot.forEach((childSnapshot) =>
{
barberShopArray.push(childSnapshot.key);
});
console.log(barberShopArray);
return barberShopArray;
}).then(barberShopArray.forEach((key) =>
{
console.log(key);
database.ref('/BarberShops/' + key + '/Barbers/Barber1/').once("value").then((snapshot)=>
{
if(snapshot.exists())
{
database.ref('metadata/shop' + num +'/').set(key);
num++;
}
return null;
}).catch((error)=>
{
console.log(error);
return error;
});
return null;
}));
});
就我而言,我做了
const db = firebase.database().ref();
db.child("orders")
.get()
.then((snapshot) => {
if (snapshot.exists()) {
const fetchedOrders = [];
for (let key in snapshot.val()) {
fetchedOrders.push({ ...snapshot.val()[key], id: key });
}
})
有關更多參考,請查看此鏈接
您已經提到console.log(barberShopArray)
行運行良好。 在console.log(barberShopArray)
行之后和barberShopArray.forEach((key)
行之前,您使用的是 return 語句return barberShopArray
。因此 function 在 return 語句之后的部分沒有被執行。請刪除 return解決問題的語句。也不需要return barberShopArray
語句后的then()
方法。因此請按以下方式修改代碼,它應該可以工作並成功更新metadata
。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var database = admin.database();
exports.addTimeNod2 = functions.pubsub.schedule('every 24 hours').onRun((context) => {
var num = 1;
let barberShopArray = [];
return database.ref('/BarberShops/').once("value").then((snapshot) => {
snapshot.forEach((childSnapshot) => {
barberShopArray.push(childSnapshot.key);
});
console.log(barberShopArray);
barberShopArray.forEach((key) => {
console.log(key);
database.ref('/BarberShops/' + key + '/Barbers/Barber1/').once("value").then((snapshot) => {
if (snapshot.exists()) {
database.ref('metadata/shop' + num + '/').set(key);
num++;
}
}).catch((error) => {
console.log(error);
return error;
});
});
return null;
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.