私はまだFirebaseを初めて使いこなしていますが、それでも "簡単な"ことを学んでいます。特定の値を持つ子オブジェクトを含むノードをフェッチする
"users": {
"-KY5FJBudXmKv07noYbZ": {
"emailAddress" : "[email protected]",
"tags": {
"red": "8dfhj34sd983ie",
"green": "9f5d6g8er2d"
}
},
"-KY5JM-NGjNgUXwrBRhs": {
"emailAddress": "[email protected]",
"tags": {
"blue": "58ewgsg656fd",
"pink": "sdf6g3dg5e6d"
}
},
"-K_0c7wslBiOceF30R-5": {
"emailAddress": "[email protected]",
"tags": {
"blue": "58ewgsg656fd",
"brown": "xx4f5g68d5d1",
"black": "8941gs8536sdf1"
}
},
}
私は何をしたいことは、その値が58ewgsg656fd
でそのtags
に子を含めるusers
内のノードを取得している:私はこのようになります構造を有しています。
この例では、それは"blue": "58ewgsg656fd"
子であろうと、それらを含有users
ノードは、2つ(...0R-5
と...BRhs
)その構造内の1つの最後です。私はそれらのノードを取得するために書くべき
DatabaseReference usersRef = database.getReference("users");
usersRef.orderByChild("tags").[NOT SURE WHAT GOES HERE].addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (dataSnapshot.getChildrenCount() == 0) {
// No users found with that tag
} else {
// Users found with that tag
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Error occurred
}
});
何コード:
これは私がこれまでしている何ですか?
タグのキーと値のペアの順序を逆にする必要があります。 –
だから私はそれをしたと言いますが、 "価値"の代わりに "キー"を使ってクエリを行う方法はありますか? – Brian
キーと値を逆転させたり、反転したキー/値を持つ子ノードを追加したりしても、すべての値にインデックスを定義する必要があるため、依然として難しいクエリです。このような場合は、値からパスへの最上位ルックアップリストマッピングを追加する方がよいでしょう。私の答えはこちらを参照してください:http://stackoverflow.com/questions/40656589/firebase-query-if-child-of-child-contains-a-value –