java - 选择带有字符串的对象包含来自 Firebase DB 的一些子字符串
问题描述
现在我只想选择具有给定性别和品质的名字。我写了这样的代码
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 的所有单词。
解决方案
如果不对架构进行一些重大更改,您就无法使用 Firebase 实时数据库执行此操作。实时数据库不具备对多个条件执行过滤的能力(有些人用 SQL 术语说“多个 where 子句”)。如果要检查多个事物的匹配项,则必须创建一个复合字段,其中包含您要查找的事物的组合。例如,您需要一个字符串值,它具有性别和所有以可预测的方式连接在一起的品质,然后让客户搜索该字符串。
Firestore 允许您过滤多个条件,但您仍然无法搜索对象集。您仍然需要一个将所有品质连接在一起的特殊字段。
推荐阅读
- sql-server - 从 Pandas 转换为 SQL Server 地理
- typescript - 在 VS Code 中调试 TypeScript 改为使用 JavaScript
- angular - 使用 angular-oauth2-oidc 并且需要代理请求但不能
- javascript - 如何调用此天气 API 以显示图标而不是显示链接?
- android - PolymorphicJsonAdapterFactory 缺少标签
- javascript - 从对象数组创建树视图,包括每个元素的 id 和原始路径(javascript)
- json - 为什么在我的 HttpPost 方法 Ajax 调用中,控制器上的参数为空?
- ios - Xcode 11 模拟器一直崩溃
- python - 如何从csv中删除逗号和括号
- azure - Azure YAML 条件表达式 Powershell 任务