2017-01-10 18 views
0

Firebaseを初めて使用しています。私は値でそれをフィルタリングした後にキーの値を取得しようとしています。 私が最初に私は、このユーザーのオブジェクトを取得した後Firebaseの値でフィルタリングした後にキーの値を取得します

uref.orderByChild("room_num").equalTo(room_num).once("value" ... 

を使用してroom_num値「323」を持つ特定のユーザーを取得し、私は彼/彼女の電話番号へのアクセスを持っていると思います。しかし、以下のコードは私に必要なものを私に与えません。

var uref = new Firebase('https://XXX.firebaseio.com/users'); 
uref.orderByChild("room_num").equalTo("323").once("value", function(data) { 
     $scope.telephone = data.telephone; 
     console.log($scope.telephone); 
}); 

また、$ firebaseArrayでラップしようとしました。ここで

は私のデータベースは、コールバックがスナップショットを渡され

users 
    6GFbWBV9rINa3ZCDN45BgM1PO3o2 
     email: "[email protected]" 
     name: "Mark" 
     room_num: "323" 
     telephone: "72839202" 

My database looks like this

答えて

0

のように見えるものです。スナップショットには、クエリに一致する各エントリの子があります。子スナップショット内のデータにアクセスするには、val()を呼び出す必要があります:

uref.orderByChild("room_num").equalTo("323").once("value", function (snapshot) { 
    snapshot.forEach(function (childSnapshot) { 
    var data = childSnapshot.val(); 
    $scope.telephone = data.telephone; 
    console.log($scope.telephone); 
    }); 
}); 
+0

私は(「child_added」)一度 'にそれを変更したときにそれが動作'それは '一回(「値」)のために' undefined'を出力します'。 – taylorm

+0

'にconsole.log(データ)'プリントアウト 'オブジェクト 6GFbWBV9rINa3ZCDN45BgM1PO3o2: オブジェクト メール: "[email protected]" 名: "マーク" room_num: "323" 電話: "72839202"' – taylorm

+0

うん、答えに誤りがありました。この場合、 'value'コールバックはクエリにマッチする子を含むスナップショットを受け取り、' forEach'を使ってスナップショットの子を列挙することができます。 – cartant

関連する問題