2017-09-04 5 views
0

私が何をしても、私はsnapshot.val()をログに記録するとそこにあるように見える子 "onSite"にアクセスする方法を理解できないようですが、それにアクセスする方法を理解する。JavaScript Firebase:クエリスナップショット常にヌル

コード: enter image description here

それはnullにすべきではない、それは偽のようになります。ここでは

firebase.database().ref().child("users").orderByChild('facebook_id').equalTo(fbID).once("value").then(function(snapshot) { 
    console.log(snapshot.val()); 
    console.log(snapshot.child("onSite").val()); 
}); 

は応答です。 id(照会の前にIDが何であるかわからないので、子供( "4mUUjF ...")。子( "onSite")。各ループを使用しても機能しない場合は、最初のレベル(ID)だけループします。

答えて

2

Firebaseデータベースに対してクエリを実行すると、複数の結果が表示される可能性があります。したがって、スナップショットにはそれらの結果のリストが含まれています。結果が1つだけの場合でも、スナップショットには1つの結果のリストが含まれます。

firebase.database().ref().child("users").orderByChild('facebook_id').equalTo(fbID) 
.once("value").then(function(result) { 
    result.forEach(function(snapshot) { 
     console.log(snapshot.val()); 
     console.log(snapshot.child("onSite").val()); 
    }); 
}); 
+0

これは私が前に見た答えであり、それは私のために動作しませんでした:

あなたのコードでは、Snapshot.forEach()を使用して、リストを処理する必要があります。今私はそれを試して、それは仮定されているように動作します...行く図。答えてくれてありがとう! –

1

スナップショットvalをゲットオブジェクト

のキーを使用して、Object.keys方法で鍵を見つけます。これでスナップの中に入ることができます。一度そこに他のオブジェクトのような値にアクセスする単純な問題です。

firebase.database().ref().child("users").orderByChild('facebook_id').equalTo(fbID).once("value").then(function(snapshot) { 
    let snap = snapshot.val(); 
    let key = Object.keys(snap)[0] 
    console.log(snap[key].onSite); 
}) 
関連する問題