javascript - 在firebase的多个节点中搜索一个值
问题描述
这是我的火力基地的结构
我想让用户写一个纪念碑的名字并检查名字是否存在,在孩子“法国”和“英语”中,你能帮忙吗?
示例:我写“塔”,结果是“塔桥”和“埃菲尔铁塔”
locaisRef = ConfiguracaoFirebase.getFirebaseDatabase().child("English language");
searchViewPesquisaInicial.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
return false;
}
});
return view;
方法
Query query = locaisRef.orderByChild("name")
.startAt(text)
.endAt(text + "\uf8ff");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list.clear()
for (DataSnapshot ds : dataSnapshot.getChildren()) {
list.add(ds.getValue(Locais.class));
}
seachAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
解决方案
对于这种类型的操作,Cloud Firestore 允许比实时数据库更简单的查询,因为它允许收集组:
查询查询 = db.collectionGroup("landmarks").orderBy("name").startAt(text).endAt(text + "~");
注意:每个集合组都需要一个索引。如果您没有手动创建一个,那么在您第一次运行查询时,它会抛出一个包含链接的异常。该链接可用于创建索引。创建索引后,查询将正常工作
推荐阅读
- environment-variables - 如何使用 C# 和 VB.Net 编程语言创建、设置、读取和删除环境变量
- spring-data - 如何告诉 Spring Data Couchbase 嵌入或引用实体?
- django - TypeError:“ModelBase”对象不支持索引。
- java - Opentimestamps - 尝试反序列化 OTS 文件时出现 Java NullPointerException
- cluster-computing - 如何授予每个人对 HPC 集群中所有节点的 sudo 权限
- android - 如何解析从服务器拉出的矢量可绘制对象到视图?
- c# - SerialPort.GetPortNames() 创建 System.StackOverflowException
- cassandra - 使用 datastax 驱动程序将数据插入 cassandra
- java - 刷新访问令牌 Retrofit2 + RXJava2
- .htaccess - 尝试从非 https 重定向到 https,但仅在 htaccess 中的 www 子域上