我正在使用Google Firebase支持Android应用程序,该应用程序包含访客列表。
我的数据结构是让用户拥有一个带有Party唯一密钥和true / false的子节点,然后各方有一个子节点,用户唯一密钥和true / false来显示关系。
users:
[unique userKey]
userName: coffeeAddict
parties:
[unique partyKey]: true
[unique partyKey]: false
parties:
[unique partyKey]:
partyName: Karen's 50th
guests:
[unique userKey]: true
[unique userKey]: false
我遵循Firebase文档显示的最佳做法,但我的问题是我正在尝试执行查询以获取用户方的所有密钥。 我已经能够查询数据库,以便根据用户名等值设置值来获取特定用户和各方。
我尝试过的最后一个返回null的查询是
DatabaseReference database = FirebaseDatabase.getInstance().getReference(Constants.PARTIES);
Query userParty = database.orderByChild("guests/"+ userID).equalTo(true);
主要问题是我不知道如何检查双方是否属实,并根据该信息进行查询。目标是根据用户的真/假状态创建用户事件列表。非常感谢任何帮助或指导。
答案 0 :(得分:0)
我在这里假设你知道你要向客人询问哪一方。试试这个:
final List<String> attendees = new ArrayList<>();
Query userParty = database.child(uniquePartyId).child("guests").orderByKey().equalTo(true);
userParty.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String userKey = dataSnapshot.getRef().toString();
attendees.add(userKey);
}
...
}
或
final List<String> attendees = new ArrayList<>();
Query userParty = database.child(uniquePartyId).child("guests").orderByKey();
userParty.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
String userKey = dataSnapshot.getRef().toString();
Boolean attendParty = (Boolean) dataSnapshot.getValue();
if (attendParty) {
attendees.add(userKey);
}
}
...
}