2017-04-04 150 views
0

我正在寫使用火力地堡的Web應用程序,閱讀從結構類似於以下的數據庫信息來訪問數據:火力地堡無法與「快照」

"user" : { 
"-KcNmMmqbSvmVXx2vn4A" : { 
    "email" : "[email protected]", 
    "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。我發現了一個錯誤,指出:

Uncaught (in promise) TypeError: Cannot read property 'session_count' of null

uid已經被定義,因此沒有問題應與訪問用戶的信息了。

任何指針將大規模讚賞!

+2

當val()返回null時,表示在您查詢的位置沒有數據。仔細檢查你的參考點是否指向你要讀取的數據庫中的正確路徑。 –

回答

1

看着由您共享的代碼,您所定義user在數據庫中,但在嘗試訪問users這可能導致你得到的錯誤。確保你使用的是正確的ref

1

對我來說,下面的工作:

//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); 
    }); 
0

維韋克是正確的,我沒有用user了,本來還導致一個錯誤,但主要的問題是,閱讀代碼,有database傳遞給它,分配給firebase.database()函數內居住。代碼更改爲這個工作得很好:

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

乾杯的三分球!