【问题标题】:Read from firebase database and store the data, return values to be used in other pages从firebase数据库读取并存储数据,返回值用于其他页面
【发布时间】:2020-05-30 05:15:00
【问题描述】:

我首先尝试从 firebase 获取数据,然后调用一个函数来更新外部变量 (setdata)。然而,该函数会创建一个局部变量并且不会更新外部变量。

我想知道如何更新外部变量?

import * as firebase from 'firebase';

function userData() {  
  var userInfo 

  firebase.auth().onAuthStateChanged(user => {
    if (user) {
      getUserData(user.uid)
    }
  })

  function getUserData(uid) {
    firebase
     .database()
     .ref('users/' + uid)
     .once("value")
     .then(function (snapshot){
        setData(snapshot.val())
      })
  }

  function setData(data){
    userInfo.name = data.name;
    userInfo.username = data.username;
  }

  return({ nameOf: userInfo.name, usernameOf: userInfo.username});
}

export default userInformation = {
  name: userData().nameOf,
  username: userData.usernameOf,
}

【问题讨论】:

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


    【解决方案1】:

    我认为问题出在你处理它的方式上。请尝试这种方式,让我知道它是否有效。它应该工作......

    userData.js

    export default function userData() {
      return firebase.auth().onAuthStateChanged((user) => {
        if (user) {
          return getUserData(user.uid);
        }
      });
    
      function getUserData(uid) {
        return firebase
          .database()
          .ref('users/' + uid)
          .once('value')
          .then(function (snapshot) {
            const data = snapshot.val();
            return { name: data.name, username: data.username };
          });
      }
    }
    

    当你想使用上述功能时,

    import userData from 'path/to/userData/js';
    
    const userInformation = userData();
    

    【讨论】:

    • 这种方法的问题是返回值而不是对象如下:'firebase.Unsubscribe'
    • 我想我做错了。我已经更新了代码。请检查...
    • 再次执行上述操作我得到相同的结果:'const userInformation: firebase.Unsubscribe'
    【解决方案2】:

    做了以下,得到了结果,

    
    var usr = firebase.auth().currentUser;
    var usrId = usr.uid;
    var ref = firebase.database().ref('users/' + usrId)
    
    var latestSnapshot = null;
    ref.on('value', function(snap) { latestSnapshot = snap.val(); });
    
    export default latestSnapshot````
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-08
      • 2019-12-04
      • 1970-01-01
      相关资源
      最近更新 更多