【问题标题】:How to get data from Firestore in map function如何在地图功能中从 Firestore 获取数据
【发布时间】:2019-07-03 17:12:24
【问题描述】:

我想在映射对象时从 Firestore 检索数据以查看用户是否在线。我不确定如何检索数据。

当我 console.log userInLobby(如下图)时,我得到 [Promise] 数组。

如果我尝试在 firebase 调用之前设置变量,我无法更改 .then() 函数中的变量

 const userInLobby = users ? (
  users.map(userdata => {
    if (userdata.status === "online") {
      var user =
        firebase.firestore().collection("users").doc(userdata.id).get().then(user => {
          return { username: user.data().username };
        })
      return user
    }
    else {
      return null;
    }
  })
) : (null);

我如何访问 [Promise] 或有其他方法来构建此代码?

【问题讨论】:

    标签: reactjs firebase react-redux google-cloud-firestore


    【解决方案1】:

    您似乎正试图在 map 函数中运行异步函数 (firebase.firestore().collection("users").doc(userdata.id).get())。

    那行不通。 map 函数只会返回一个 promise 数组。

    你需要做的是使用Promise.all()得到所有promise返回时的结果。

    const userInLobby = users
      && users.map(userdata => {
          if (userdata.status === 'online') {
            return firebase
              .firestore()
              .collection('users')
              .doc(userdata.id)
              .get()
          } 
        })
    
    Promise.all(userInLobby).then(values => console.log(values))
    
    

    【讨论】:

      猜你喜欢
      • 2020-08-29
      • 2021-05-06
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-21
      • 2021-01-06
      • 1970-01-01
      相关资源
      最近更新 更多