2017-08-15 7 views
0

私は、変数がidの値を持つ子を含むすべての子をチェックするのが好きです。`子(すべて).equalTo(id)`を呼び出すFirebase

これは私が思い付いたものです:

usersref.child(formData.openid + '/votes').child().equalTo(formData.appid).once('value', function(snapshot) {}); 

これは返さ:Firebase.childに失敗しました:0引数で呼び出されました。少なくとも1

も試み見込ん:

usersref.child(formData.openid + '/votes').orderByKey().equalTo(formData.appid).once('value', function(snapshot) {}); 

これはエラーになりませんが、任意の値を返しません。

usersref.child(formData.openid + '/votes').orderByChild('a').equalTo(formData.appid).once('value', function(snapshot) {}); 
usersref.child(formData.openid + '/votes').orderByChild('b').equalTo(formData.appid).once('value', function(snapshot) {}); 
usersref.child(formData.openid + '/votes').orderByChild('c').equalTo(formData.appid).once('value', function(snapshot) {}); 
... 
usersref.child(formData.openid + '/votes').orderByChild('z').equalTo(formData.appid).once('value', function(snapshot) {}); 

これは機能しますが、多くの要求を処理する必要があります。

データ構造:

{ 
    "AzxaXACf7UeOOsmlLh5vp4" : { 
    "favorites" : { 
     "3811" : true, 
     "3910" : true 
    }, 
    "votes" : { 
     "-KraGbsn8bHop70uUISB" : { 
     "upvote" : "3811" 
     }, 
     "-KraGcxU3gR-pqPUcEs8" : { 
     "downvote" : "3811" 
     }, 
     "-KraGkJp4oGivIF9qjml" : { 
     "upvote" : "3910" 
     }, 
     "-KraGrOy156zy5pXoR-G" : { 
     "upvote" : "3903" 
     }, 
     "-KraHhNKp2ISqNeYzS2g" : { 
     "downvote" : "3903" 
     }, 
     "-KraHr2ZANh6FlZ3xn4T" : { 
     "upvote" : "3280" 
     }, 
     "-KraKLTqwli9Q7j8mQ8w" : { 
     "upvote" : "3653" 
     }, 
     "-KraM0qUqeu9tyeHyesE" : { 
     "downvote" : "3910" 
     }, 
     "-KraM5MfgO-WW1E-aZK_" : { 
     "downvote" : "2858" 
     }, 
     "-KraMVvGSeDwkUr_2ece" : { 
     "downvote" : "2411" 
     }, 
     "-KraMWF-4oAycb0Gg3sH" : { 
     "upvote" : "2411" 
     }, 
     "-KraMifSigQ06jFvG0Q_" : { 
     "upvote" : "2344" 
     } 
    } 
    }, 
    "CLsAiPzci5Re0A5RvchUaA" : { 
    "favorites" : { 
     "3811" : true, 
     "3884" : true, 
     "3970" : true 
    }, 
    "votes" : { 
     "-Kra4o-J3vEWBxWUDvBO" : { 
     "downvote" : "3849" 
     }, 
     "-Kra4tV883O2N6_TZ_-P" : { 
     "upvote" : "3884" 
     }, 
     "-Kra4wY5jfbnm1xod-lU" : { 
     "downvote" : "3884" 
     }, 
     "-Kra54vEXVgk6Yksw_i6" : { 
     "upvote" : "3778" 
     }, 
     "-Kra5CS3iYrskVH8zBMi" : { 
     "upvote" : "3764" 
     } 
    } 
    }, 
    "ChzvupeGjiG0BYmCHinJrE" : { 
    "favorites" : { 
     "3811" : true, 
     "3910" : true 
    }, 
    "votes" : { 
     "-KraFNIoZpFqHvvOtFXh" : { 
     "downvote" : "3811" 
     }, 
     "-KraFQ_Ym9g9Jplxx1On" : { 
     "upvote" : "3811" 
     }, 
     "-KraFcEFNIVTfu8VkHGJ" : { 
     "upvote" : "3910" 
     }, 
     "-KraFfawEo7Km6jn_dk5" : { 
     "downvote" : "3678" 
     }, 
     "-KraFlSGxJl_5owfGsZd" : { 
     "downvote" : "3778" 
     }, 
     "-KraFpsRnEl4CjQN217w" : { 
     "downvote" : "3769" 
     } 
    } 
    }, 
    "I1SKo3UK8BmeET9fPPvpuo" : { 
    "votes" : { 
     "-KraFMANOoLdOFoICWH2" : { 
     "upvote" : "3910" 
     } 
    } 
    }, 
    "K_a5kz2pdgYfOiBmT8JGxc" : { 
    "votes" : { 
     "-Kracl3JaWWYeD_YLVan" : { 
     "downvote" : "3764" 
     } 
    } 
    }, 
    "LogzS_ZExtPm8AV6YolLkM" : { 
    "favorites" : { 
     "3811" : true, 
     "3970" : true 
    }, 
    "votes" : { 
     "-Kra1HNVSRYnGOMq0xZK" : { 
     "downvote" : "3970" 
     }, 
     "-Kra1OWl52FfUehK7-yq" : { 
     "upvote" : "3970" 
     }, 
     "-Kra1ZLVzxo4TtXquaZu" : { 
     "upvote" : "3851" 
     }, 
     "-Kra1bKIWj0anYj-F4sr" : { 
     "downvote" : "3851" 
     }, 
     "-Kra1flJIk6CzT6BW2di" : { 
     "upvote" : "3778" 
     }, 
     "-Kra1sU1FpSPxCSH-NkC" : { 
     "upvote" : "3903" 
     }, 
     "-Kra1wxxyDNQqZCYI0ZO" : { 
     "upvote" : "3811" 
     } 
    } 
    }, 
    "OufAmSLsiabJc0ou2oqA2c" : { 
    "favorites" : { 
     "2896" : true 
    }, 
    "votes" : { 
     "-Kra4zr7J5RFv8X96BPp" : { 
     "upvote" : "3903" 
     }, 
     "-Kra5-mUpIDqiV-xbm5e" : { 
     "downvote" : "3903" 
     }, 
     "-Kra50ZODLPN-Hz_M3_P" : { 
     "upvote" : "3903" 
     }, 
     "-Kra5OuuuqmIiHBf0kut" : { 
     "upvote" : "3903" 
     }, 
     "-Kra5PqL4H0oN-MSSNjr" : { 
     "upvote" : "3903" 
     }, 
     "-KradBD0hRetdaq7ia0Q" : { 
     "downvote" : "2896" 
     }, 
     "-KradCiHyImnvRy-Uzu3" : { 
     "upvote" : "2896" 
     }, 
     "-Kradu_d25JMX69TOAVB" : { 
     "upvote" : "3811" 
     }, 
     "-KrakdW3B7rSg3Fhr2o-" : { 
     "upvote" : "3778" 
     }, 
     "-KrakgwUjMDIHPpL2wh2" : { 
     "upvote" : "3885" 
     } 
    } 
    } 
} 
+1

データベース構造を教えてください。 –

+0

@ZiyaERKOC私の更新を確認してください –

+0

更新されたJSONを使用すると、あなたのクエリはもう意味をなさないでしょう。 'formData.openid'とは何か、この新しい構造体上では' orderByChild( 'a')。equalTo(formData.appid) 'とは何ですか? –

答えて

1

特定の値のためにすべての子を検索するには、no FirebaseデータベースAPIはありません。

私が考えることができる最高ののは、すべての値の逆インデックスを作成して、どの子でもその値を持つ投票に戻すことです。したがって:

app_index 
    appid1 
    voteid1: true 
    voteid2: true 
    voteid3: true 
    appid2 
    voteid1: true 
    voteid3: true 
    appid3 
    voteid2: true 
    voteid4: true 

これで、特定のアプリIDのすべての票を検索できます。

+0

更新を確認してください。このデータ構造は、(アプリではなく)ユーザに基づいているので、アップしているか、またはダウンしているかを知ることができます。 –

関連する問題