首页 > 解决方案 > 如何从 Firebase 获取价值而不是 Promise?

问题描述

我想从 Firebase 实时数据库中获取“数据价值”。你可以在下面找到我的代码:

  async function getName() {
    const result = await firebase.database().ref('/users/' + user.user.uid)
    .once('value').
    then(async function(snapshot) {
      console.log("SNapshot =>");
      console.log(snapshot.val().displayName); // returns "John Doe"

      const result2 = await snapshot.val().displayName;

      return result2;
    });

    return result; // returns "Promise Object"
  };

它返回“承诺”。但我想获得价值而不是承诺。

我应该如何修复我的代码?

谢谢。

标签: javascriptfirebasereact-nativefirebase-realtime-database

解决方案


您将 async/await 与 then()/catch() 的使用混为一谈。您应该选择一种语法或另一种语法,在这种情况下不要同时选择两者。您还尝试在不是承诺的情况下使用 await 。只需像这样编写您的函数:

async function getName() {
  const snapshot = await firebase.database().ref('/users/' + user.user.uid).once('value')
  return snapshot.val().displayName
}

并这样称呼它:

const name = await getName()

推荐阅读