[英]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.