Firebase DatabaseReference 按指定值过滤

Posted

技术标签:

【中文标题】Firebase DatabaseReference 按指定值过滤【英文标题】:Firebase DatabaseReference filter by specified values 【发布时间】:2017-10-26 00:30:03 【问题描述】:

假设我有这个 firebase JSON 结构:

我需要得到所有属性“from”等于“this”的问题。

我知道我可以使用 Volley 来创建 StringRequest 并从我的 questions.json 中获取所有值。然后,在客户端,我可以遍历响应并删除那些没有正确属性的响应,但这只有在我有几个问题时才有效。如果我有数百万个问题,我需要遍历这数百万个问题。

有什么方法可以对我的请求进行过滤以仅获取具有我选择的属性的问题? (例如:搜索 questions.json where from == this)

【问题讨论】:

【参考方案1】:

如果对你的场景有用,试试这个

 DatabaseReference reference = FirebaseDatabase.getInstance().getReference();

    Query query = reference.child("questions").orderByChild("from").equalTo("this");
    query.addListenerForSingleValueEvent(new ValueEventListener()  
        @Override 
        public void onDataChange(DataSnapshot dataSnapshot) 
            if (dataSnapshot.exists()) 

                for (DataSnapshot issue : dataSnapshot.getChildren()) 
                // do with your result
                 
             
         

        @Override 
        public void onCancelled(DatabaseError databaseError) 

         
    ); 

【讨论】:

【参考方案2】:

你可以使用equalTo

Query query = reference.child("questions").orderByChild("from").equalTo("this");

【讨论】:

以上是关于Firebase DatabaseReference 按指定值过滤的主要内容,如果未能解决你的问题,请参考以下文章

无法解决:com.google.firebase:firebase-ml-vision:24.1.3;无法解决:com.google.firebase:firebase-core:20.0.2

没有创建 Firebase 应用“[DEFAULT]” - 在 Flutter 和 Firebase 中调用 Firebase.initializeApp()

如何修复 Firebase 9.0 导入错误? “尝试导入错误:‘firebase/app’不包含默认导出(导入为‘firebase’)。”

Firebase 持久化,清除 Firebase 缓存

Firebase 存储不会下载并添加到 firebase 数据库

将 Firebase 身份验证与 Firebase 数据库连接