對於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"
}
},
}
我想要做的就是內users
包含在孩子獲取節點的tags
其中該值是58ewgsg656fd
。
在這個例子中,這將是"blue": "58ewgsg656fd"
孩子和包含它們的users
節點是最後兩個(...0R-5
和...BRhs
)一個在該結構中。
這是我到目前爲止有:
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 –