android - Android Studio 中的 Firebase 数据库查询
问题描述
我想在 Firebase 数据库中进行查询:如果在“检测名称”节点中输入了数据,那么它会在“受过培训的人姓名”节点中查询相同的数据,如果两者相等,那么它只会获取所有同名的子节点而不是全部价值观。
如果检测名称节点中的孩子是 maarij,则在受过训练的人名中搜索 maarij 并仅获取 maarij 的所有信息。
数据库:
我尝试使用此代码进行查询,但它提供了保存在受训人员姓名节点中的所有数据。如果在“Trained Person Names”节点中找到“detection name”子项,我只想要该名称的特定数据和信息。
final Query mydata= FirebaseDatabase.getInstance().getReference().child("Trained Person Names");
mydata.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final Query myquery = detection_Name.orderByChild("Detection name").limitToLast(1)
.equalTo(String.valueOf(trained_Name.orderByChild("Guest Name")));
Log.i("33","VALUE OF DATASNAPSHOT:"+dataSnapshot.getValue());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
谢谢!!
解决方案
你做错了兄弟因为名字不是一个唯一的词,只使用不会在任何地方重复的唯一参数。然后你可以正确地完成你的任务。创建一个唯一 ID 并将该值保存在“检测名称”表中。将该值用作“Trained Person Names”表中的键。现在,您必须做一件事,首先从“检测名称”表中获取该值并使用如下所示:
final Query mydata= FirebaseDatabase.getInstance().getReference().child("Trained Person Names");
mydata.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
final Query myquery = detection_Name.orderByChild("Detection name").limitToLast(1)
.equalTo(String.valueOf(trained_Name.orderByChild("Guest Name")));
Log.i("33","VALUE OF DATASNAPSHOT:"+dataSnapshot.getValue());
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
您可以像这样创建一个唯一值:
String uniqueId = FirebaseDatabase.getInstance().getReference().push().toString();
推荐阅读
- android - 如何在每天的特定时间执行请求?
- firebase - 在可调用的firebase函数中获取用户代理
- typescript - VueJS3:解析 JSON 问题
- django - Django 表单:两个用户(A 和 B) - RelatedObjectDoesNotExist 异常值通道没有卖家
- java - 如何在Java中拆分字符串并在其间附加一些内容
- c# - 使用 CancellationTokens 作为事件的替代品有什么优缺点?
- c# - Entity Framework Core DbContext OnConfiguring 不再存在
- percona-xtradb-cluster - PXC 的第二个节点不加入集群
- python - 有没有办法在方法链接中使用`set_index`?
- c# - Datagridview 在更改组合框时闪烁