Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase orderByChild-奇怪的行为_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android Firebase orderByChild-奇怪的行为

Android Firebase orderByChild-奇怪的行为,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我尝试使用以下代码“筛选结果”: 方法1: DatabaseReference ref = FirebaseDatabase.getInstance().getReference(CollaboratorSkillDao.COLLABORATOR_SKILLS_PATH); ref.orderByChild(CollaboratorSkill.JSON_COLLABORATOR_ID).equalTo(id); ref.addValueEventListener(new OnDataChange

我尝试使用以下代码“筛选结果”:

方法1:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(CollaboratorSkillDao.COLLABORATOR_SKILLS_PATH);
ref.orderByChild(CollaboratorSkill.JSON_COLLABORATOR_ID).equalTo(id);
ref.addValueEventListener(new OnDataChange() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        Log.d(TAG, "onDataChange: " + dataSnapshot.getChildrenCount());
    }
});
方法2:

FirebaseDatabase.getInstance().getReference(CollaboratorSkillDao.COLLABORATOR_SKILLS_PATH)            
    .orderByChild(CollaboratorSkill.JSON_COLLABORATOR_ID).equalTo(id)
    .addValueEventListener(new OnDataChange() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Log.d(TAG, "onDataChange: " + dataSnapshot.getChildrenCount());
        }
     });
据我所知,它们是等价的
但对于方法1,它返回58个结果;对于方法2,它返回4个结果

这意味着方法1不进行过滤。

为什么会发生这种情况?

当您调用其中一个查询方法(
orderBy…
equalTo
等)时,它会创建一个新的查询对象。因此,您需要在变量中捕获并使用它:

DatabaseReference ref = FirebaseDatabase.getInstance().getReference(CollaboratorSkillDao.COLLABORATOR_SKILLS_PATH);
Query query = ref.orderByChild(CollaboratorSkill.JSON_COLLABORATOR_ID).equalTo(id);
query.addValueEventListener(new OnDataChange() {
    ...