我可以使用orderByChildequalTo来获取子项中特定值的数据(很酷,它也适用于嵌套子项)

private void getData() {
        try {
            final DatabaseReference database = FirebaseDatabase.getInstance().getReference();

            database.child(Constants.TABLE_TASKS).orderByChild("user/id")
                    .equalTo("somevalue")
                    .addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot) {
                            Timber.d(dataSnapshot.toString());
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError) {
                        }
                    });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

是否有一种简单的方法来获取未找到特定值(基本上类似于notEqualTo("somevalue"))的数据?

最佳答案

在Firebase查询模型中,您不能将不等式过滤为值。

但是您可以测试是否缺少任何值(本质上是:缺少属性)。例如,使用此数据模型:

{
    child1: {
      "user": {
        "id": 1,
        "name": "puf"
      }
    },
    child2: {
      "user": {
        "id": 2,
        "name": "abe"
      }
    },
    child3: {
      "user": {
        "id": 3
      }
    }
}

我可以使用以下命令查询没有user/name属性的 child :
ref.orderByChild('user/name').equalTo(null)

这导致唯一一个没有名字的 child :



随意与我的jsbin一起玩,看看您是否能进一步学习:http://jsbin.com/liyibo/edit?js,console

更新:我知道我之前已经回答了这个问题,但是之前找不到。这是骗子:is it possible query data that are not equal to the specified condition?。似乎我在这里犯了一个错误,因为显然我正在测试以上代码中是否缺少属性。

关于android - Firebase:根据条件查询以排除数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39195191/

10-11 22:32
查看更多