2017-02-05 7 views
1

反復処理Firebaseの子供たちが

var data; 
 
var starCountRef = firebase.database().ref(); 
 
starCountRef.on("value",snap =>{ 
 
    data = snap.val(); 
 
    console.log(data); 
 
    uid = //some uid here; 
 
    checkifplaying(data,uid); 
 
}); 
 
function checkifplaying(data,uid){ 
 
    var flag1 = 0; 
 
    var pos = -1; 
 
    console.log(data); 
 
    data.Users.forEach(function(user){ 
 
    if(uid == user.uid){ 
 
     flag1 = 1; 
 
     which = data.User; 
 
    } 
 
    }); 
 
    if(flag1 == 0){ 
 
    $("#contest3").show(); 
 
    } 
 
    else if(flag1 == 1){ 
 
    $("#contest1").show(); 
 
    $("#contest2").show(); 
 
    } 
 
}

私Firebase DBは、次のようになります。

enter image description here

私は、foreachループを使用してユーザーの子どもたちを反復処理しようとしています

data.Users.forEach(function(user){ 
}) 

を返しますが、エラーはdata.Users.forEach is not a functionです。データには、スナップショットによって取得されたデータベース全体が含まれます。 それにはマスターオブジェクトが含まれています。

これを繰り返す方法を教えてください。

+0

あなたは、コードの一部を貼り付け気にしませんか? –

+0

@TylerBiscoe貼り付け –

答えて

2

スナップショットの値を関数に渡しています。代わりにスナップショットオブジェクトを渡す必要があります。

starCountRef.on("value",snap =>{ 
    //data = snap; 
    console.log(snap.val()); 
    uid = //some uid here; 
    checkifplaying(snap,uid); 
}); 

そして、あなたのcheckifplaying機能に:このよう

function checkifplaying(data,uid){ 
    var flag1 = 0; 
    var pos = -1; 
    console.log(data); 
    data.child('Users').forEach(function(user){ 
    if(uid == user.uid){ 
     flag1 = 1; 
     which = data.User; 
    } 
    }); 
    if(flag1 == 0){ 
    $("#contest3").show(); 
    } 
    else if(flag1 == 1){ 
    $("#contest1").show(); 
    $("#contest2").show(); 
    }