javascript - 如何从 Firebase 获取值(value)而不是 Promise?

标签 javascript firebase react-native firebase-realtime-database

我想从 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"
  };

它返回“Promise”。但我想要的是值(value)而不是 promise 。

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

谢谢。

最佳答案

您将 async/await 与 then()/catch() 的使用混合在一起。在这种情况下,您应该选择一种语法或另一种语法,而不是同时选择两种语法。您还尝试对不是 promise 的事情使用等待。只需像这样编写您的函数:

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

并这样调用它:

const name = await getName()

关于javascript - 如何从 Firebase 获取值(value)而不是 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54963700/

相关文章:

javascript - 如何通过 jquery 中的 .on 函数在多个选择器上附加不同的事件?

react-native - 在 React-Native 应用程序中使用带有授权 header 的 Axios GET

React-native 组件缓存(或防止卸载)(react-navigation)

javascript - 如何通过 React 中的对象数组渲染/映射

javascript - 当服务器端脚本可以轻松做到这一点时,为什么浏览器不允许 CORS?

javascript - 批量获取DocumentReferences?

firebase - 在 Firestore 安全规则模拟中找不到函数错误 : Name: [get].

firebase - 如何从 angularfire2 获取当前登录的身份验证状态/用户

android - 如何在真实设备上打开 react-native 的开发菜单

javascript - 如何使用键盘输入暂停 html5 canvas javascript 动画