Firebase无法使用"快照"

时间:2017-04-04 00:45:56

标签: javascript firebase firebase-realtime-database

我正在编写一个使用Firebase的Web应用程序,并从数据库中读取信息,结构如下:

"user" : {
"-KcNmMmqbSvmVXx2vn4A" : {
  "email" : "firebase@firebase.com",
  "firstname" : "fire",
  "membership_tier" : 1,
  "session_count" : 0,
  "surname" : "base"
}

我试图读取用户已经进行的会话数 - 但是没有返回任何结果。

到目前为止我已尝试过:

 firebase.database().ref('/users/' + uid).once('value').then(function(snapshot) {
   var sessionCount = snapshot.val().session_count;
 });

目前snapshot.val()正在返回null。我收到错误声明:

  

未捕获(承诺)TypeError:无法读取属性' session_count'为null

uid已定义,因此访问用户信息时不应出现任何问题。

任何指针都会受到大力赞赏!

3 个答案:

答案 0 :(得分:2)

以下内容适用于我:

  //INITIALIZE FIREBASE WEB APP
  firebase.initializeApp(config); 
  var db = firebase.database();
  var auth = firebase.auth();

  db.ref('/whatever/').once('value').then(function(snap) {
    if(snap.val()){
      console.log(snap.val().whateverProperty);
    } else {
      console.log('/whatever/whateverProperty node does not exist!');
    }
  }, function(error) {
    // The Promise was rejected.
    console.log(error);
  });

答案 1 :(得分:1)

查看您共享的代码,您已在数据库中定义user但尝试访问users,这可能会导致您收到的错误。确保使用正确的ref

答案 2 :(得分:0)

Vivek是对的,我没有使用user,也会导致错误,但主要问题是阅读代码位于已通过database的函数中分配到firebase.database()。将代码更改为此工作正常:

database.ref('/user/' + uid).once('value').then(function(snapshot) {
  var sessionCount = snapshot.val().session_count;
});

为指针干杯!