首页 > 解决方案 > 选择带有字符串的对象包含来自 Firebase DB 的一些子字符串

问题描述

我有结构的firebase数据库在此处输入图像描述

现在我只想选择具有给定性别和品质的名字。我写了这样的代码

private NameImpl.Gender mGender;
private String[] mQualities;

...

public void GetNames()
{
    mRef.orderByChild("Gender").equalTo(mGender.name()).addValueEventListener(new ValueEventListener()
     {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            getData(dataSnapshot);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
     });
}

但我不明白如何在这里添加要求数据库中的 Qualities 字符串必须包含来自 mQualities 的所有单词。

标签: javafirebasefirebase-realtime-database

解决方案


如果不对架构进行一些重大更改,您就无法使用 Firebase 实时数据库执行此操作。实时数据库不具备对多个条件执行过滤的能力(有些人用 SQL 术语说“多个 where 子句”)。如果要检查多个事物的匹配项,则必须创建一个复合字段,其中包含您要查找的事物的组合。例如,您需要一个字符串值,它具有性别和所有以可预测的方式连接在一起的品质,然后让客户搜索该字符串。

Firestore 允许您过滤多个条件,但您仍然无法搜索对象集。您仍然需要一个将所有品质连接在一起的特殊字段。


推荐阅读