【发布时间】:2017-12-02 02:47:32
【问题描述】:
您好搜索了很多,但找不到与我的主题相关/或已回答的任何问题。
我正在使用具有这些结构的 Firebase 数据库(来自 firebase 官方文档)
// An index to track Ada's memberships
{
"users": {
"alovelace": {
"name": "Ada Lovelace",
// Index Ada's groups in her profile
"groups": {
// the value here doesn't matter, just that the key exists
"techpioneers": true,
"womentechmakers": true
}
},
...
},
"groups": {
"techpioneers": {
"name": "Historical Tech Pioneers",
"members": {
"alovelace": true,
"ghopper": true,
"eclarke": true
}
},
...
}
}
Docu 说:检查 /$uid/groups/$group_id 是否为空
This approach, inverting the data by listing the IDs as keys and setting the value to true, makes checking for a key as simple as reading /users/$uid/groups/$group_id and checking if it is null. The index is faster and a good deal more efficient than querying or scanning the data.
但是我如何在 Java 代码中进行管理呢?
有这样的东西?
mDatabase.child("table/foo").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
//
在这个查询之后我需要一个简单的真或假
if(query) {
user is in Group
... else {
User is not in group
只是或更好地突出显示
key 是我的用户 ID
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference memberDatabaseReference = rootRef.child("groups").child(groupName).child("members").child(key);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if (!dataSnapshot.exists()) {
Log.d("TAG", "Member does not exist!");
} else {
Log.d("TAG", "Member exists!");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
memberDatabaseReference.addListenerForSingleValueEvent(valueEventListener);
【问题讨论】:
标签: android firebase firebase-realtime-database usergroups