【问题标题】:return from firebase function从 firebase 函数返回
【发布时间】:2018-10-18 15:13:18
【问题描述】:

我的功能:

export async function getDataUser() {

    var usersRef = firebase.database().ref('UsersList');
    var user = firebase.auth().currentUser;
    let dataUser;

    if (user) {                      //EDITED
        await usersRef.child(user.uid).once('value').then((snapshot) => {

            dataUser = snapshot;
        })
    }
    console.log("dataUser")
    console.log(dataUser)
    return dataUser;
}

然后在另一个组件中:

console.log("result")
console.log(getDataUser())

我希望我的函数返回快照,但这是我的结果:

结果

Promise {
  "_40": 0,
  "_55": null,
  "_65": 0,
  "_72": null,
}

数据用户

Object {
  "age": "55",
  "email": "test@test.fr",
  "sexe": "homme",
}

我不知道为什么我的结果是错误的,我的返回应该发送用户对象。

【问题讨论】:

    标签: javascript firebase react-native google-cloud-functions


    【解决方案1】:

    on() 不返回承诺。它设置了一个持续接收更新的监听器,直到您调用off()。如果您想一次性获取数据并在数据准备就绪时收到承诺,请改用once()

    【讨论】:

      【解决方案2】:

      我试图重现你的代码,我发现工作是这样的:

      当您返回承诺值时,您可以附加一个.then() 回调,然后在该回调中检查结果。像这样:

      export async function getDataUser() {
      
          var usersRef = firebase.database().ref('UsersList');
          var user = firebase.auth().currentUser;
          let dataUser;
      
          if (user) {
              return await usersRef.child(user.uid).once('value').then((snapshot) => {
                  return dataUser = snapshot; // or return dataUser = snapshot.val();
              })
          }        
      }
      

      显示后:

      getDataUser().then((result)=>{
      console.log(result);
      })
      

      【讨论】:

      • result Promise { "_40": 0, "_55": null, "_65": 0, "_72": null, } and dataUser = null, 我的 dataUser 已经没问题了
      • @ThibautChazalon 你能展示你的数据库是如何填充的吗?
      • ibb.co/kSeFJ0 但是你有没有注意到我的dataUser已经好了?
      • @ThibautChazalon 我编辑了我的解决方案。希望这会有所帮助,如果它仍然不起作用,我们可以继续寻找。 :)
      • 很好,这是一个简单的问题,但对我未来有很大帮助,谢谢
      猜你喜欢
      • 1970-01-01
      • 2016-09-28
      • 2019-12-17
      • 1970-01-01
      • 2017-08-11
      • 2018-08-04
      • 1970-01-01
      • 2021-10-01
      • 2019-05-12
      相关资源
      最近更新 更多