【问题标题】:Firebase Android getting a child value of a child valueFirebase Android获取子值的子值
【发布时间】:2016-11-09 07:17:57
【问题描述】:

我正在使用 Google Firebase 来支持一个 Android 应用程序,该应用程序的参与方包括来宾列表。

我将我的数据结构化为让用户有一个带有方唯一键和真/假的子节点,然后各方有一个带有用户唯一键和真/假的子节点来显示关系。

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);

主要问题是我不知道如何检查双方是否属实并根据该信息进行查询。目标是根据用户的真/假状态创建用户事件列表。非常感谢任何帮助或指导。

【问题讨论】:

  • 附带说明,... 无需将 user- 或 partyKey 值设置为 false。当您将其设置为 false 时,只需删除整个对象 ({"unique userKey" : false})。然后你可以只听整个客人/派对对象。如果这还没有解决您的问题,请让自己更清楚您想要实现的目标。

标签: android firebase firebase-realtime-database


【解决方案1】:

我在这里假设您知道您要为哪一方询问客人。试试这个:

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);
        }
    }
    ...
}

【讨论】:

  • 非常感谢。由于查询参数过多,第一个函数抛出错误,但第二个函数允许我获取用户的密钥。
猜你喜欢
  • 2018-10-15
  • 2017-09-03
  • 1970-01-01
  • 2018-04-16
  • 2021-06-18
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多