繁体   English   中英

如何使用 firebase.on() function 制作 promise?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM