[英]How do you make a function that returns a promise work properly inside of a forEach loop?
[英]How do you make a promise with firebase .on() function?
我正在嘗試使用 Firebase.on() 方法來檢查何時在我的實時 Firebase 數據庫中創建了新帳戶。 現在,由於我在 Firebase 數據庫中加密此數據,我想第一次加載來自 firebase 的數據以使用我制作的 ZC1C425268E68385D1AB5074C17A94F1 對其進行解密。 是否有可能我可以制作像 promise 這樣的東西,一旦 firebase 將所有數據加載到我的變量中,我就可以這樣做?
var users2 = database.ref("users/").on("value", (snapshot) => {
const usersLst = snapshot.val();
users = usersLst
});
我想添加這樣的內容:
var users2 = database.ref("users/").on("value", (snapshot) => {
const usersLst = snapshot.val();
users = usersLst
}).then(() => {
console.log(decryptAccounts(users))
});
我要保留的一件重要的事情是.on() function,因為這將允許我不斷檢查是否有人在數據庫中創建了新帳戶。 有誰知道我可以用來實現相同目標的另一種方法是什么?
您可以將 ref 存儲在變量中以像文檔建議的那樣重用它。
const databaseRef = database.ref("users/");
// use databaseRef.get() with the correct path to your attribute you want to get
// Runs only once
databaseRef.get().then((snapshot) => {
// Decrypt function
});
// Listens to changes
var users2 = databaseRef .on("value", (snapshot) => {
const usersLst = snapshot.val();
users = usersLst
});
這首先獲取一次值,然后您可以解密它們,當值更改時,function 將再次被觸發。
您可以在on()
() 中添加decryptAccounts()
函數,因此每次收到更新時,您都可以在該數據上運行 function。
var users2 = database.ref("users/").on("value", (snapshot) => {
const usersLst = snapshot.val();
// runs on new value fetched after every update
decryptAccounts(usersLst)
})
我在 Dharmaraj 的幫助下找到的答案是你可以這樣做:
database.ref("users/").on("value", (snapshot) => {
decryptAccounts(snapshot.val());
});
這將每次從數據庫中獲取值並解密它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.