首页 > 解决方案 > 使用 Firebase 检查整个 JSON 文件中是否存在数字

问题描述

我将一个 CSV 文件作为 JSON 文件导入到我的 firebase 数据库中,该数据库包含车牌号列表和一些其他不相关的信息,我想做的是检查车号是否存在,如果存在,设置标记为真。

数据库看起来像这样,我要检查的数字是它们的第一个值:JSON

在我的代码中,我几乎陷入了函数的这个阶段:


    number = 4932564 //example number
    Boolean carExists = false;
    dbref = FirebaseDatabase.getInstance().getReference("rechev-6c");

    //here I want to scroll through all the childs and check of a the number exists

    }

那是因为我不知道该选哪个孩子,我需要以某种方式遍历每个孩子到“rechev-6c”数据库,然后检查它的任何键是否包含我想要的车号,如果是,设置标志为真。

感谢您提供任何帮助。

标签: javaandroidfirebasefirebase-realtime-database

解决方案


这可以通过查询来实现:

dbref = FirebaseDatabase.getInstance().getReference("rechev-6c");
String property = "MISPAR RECHEV|TAARICH||HAFAKAT TAG|SUG TAG"
Query query = dbref.orderByChild(property).equalTo("04932564")

query.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  public void onDataChange(DataSnapshot dataSnapshot) {
    for (DataSnapshot snapshot: dataSnapshot.getChildren()) {
      System.out.println(snapshot.getKey()); // 99099, or similar
      System.out.println(snapshot.child(property).getValue(String.class)); 
    }
 }

  @Override
  public void onCancelled(DatabaseError databaseError) {
    throw databaseError.toException();
  }
}

需要注意的几点:

  • Firebase 只能查询固定/已知路径上的值,因此仅当属性名称(“MISPAR ...”)可以硬编码时才有效,这似乎是您的情况。
  • Firebase 只能匹配以某个值开头0的字符串,这就是为什么我在equalTo. 没有过滤包含特定值的字符串的选项。

推荐阅读