【问题标题】:Value return null when search a value using query firebase android studio使用查询firebase android studio搜索值时返回null
【发布时间】:2020-02-19 23:35:48
【问题描述】:

我想问,所以我想在 firebase 上搜索一个 ID 条形码的值。我尝试在使用此行代码的 stackoverflow 上进行搜索。

 tindakan = FirebaseDatabase.getInstance().getReference("tindakan");
 bedahMulut = tindakan.child("Bedah Mulut");

 Query searchByID = tindakan.orderByChild("ID").equalTo(idBarcode);

 searchByID.addValueEventListener(new ValueEventListener() {
     @Override
     public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
         for (DataSnapshot idSnapshot : dataSnapshot.getChildren()) {
             Log.v("hasil", "Found! -> " + idSnapshot.child("ID").getValue(String.class));
         }
     }

     @Override
     public void onCancelled(@NonNull DatabaseError databaseError) {
         Log.v("hasil", databaseError.toException().toString());
     }
 });

但此代码返回 null 值,我已经在下面发布了结构 firebase 和调试会话。请提前帮助我,谢谢:)

【问题讨论】:

  • 您能否扩展您的数据库以显示 Bedah MulutID?除了 tindakanbedahMulut 之外,没有像 ID 这样的孩子,可以通过 orderByChild 访问
  • 请添加 Md. Asaduzzaman 要求的内容,也请回复 @AlexMamo

标签: android firebase firebase-realtime-database


【解决方案1】:

您似乎正在尝试查询深度嵌套的数据结构,但这是不可能的。 Firebase 实时数据库查询在平面列表上运行,您订购/过滤的属性/值位于每个直接子节点下的固定路径。

解决方案通常是创建一个额外的数据结构,在其中保留一个简单的 ID 列表,然后值是具有该 ID 的节点的路径。

"IDs": {
  "INLAY": "/tindakan/Konservasi/Inlay/Kelas -"
}

【讨论】:

  • 如果是这样的结构,我可以只列出名称吗?因为在项目中我可以看到(按名称,例如 inlay(不是 ID 条形码)),添加、更新和删除数据。
  • 例如我要编辑,必须先显示名称(例如inlay),然后显示类别和显示所有信息(如ID、名称、价格)
  • 我不确定我是否明白你在问什么。但是结构可以是您想要查找或搜索的任何内容。此答案中的结构可以轻松找到INLAY 的路径,但我链接的问题中还有许多其他变体。
  • 然后用户可以更新数据或删除数据。如果用户想添加其他数据,它将转到另一个部分。
  • 我已经勾选了标记,但我无法投票,因为我的声誉低于 15
猜你喜欢
  • 2018-11-11
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-26
相关资源
最近更新 更多