我正在编写一个使用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
已定义,因此访问用户信息时不应出现任何问题。
任何指针都会受到大力赞赏!
答案 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;
});
为指针干杯!