一尘不染

Google Firebase检查孩子是否存在

java

在我的应用程序中,我需要检查firebase上数据库的给定元素是否有一个具有给定名称的孩子。我希望可以通过以下方式来做到这一点:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

if (rootRef.childExists("name")) {
    //run some code
}

我进行了搜索,但找不到任何有用的信息。


阅读 241

收藏
2020-09-08

共1个答案

一尘不染

编辑2; 值得放在最上面:我认为值得一提的是,它实际上是在此快照中下载所有数据,只是为了检查是否存在任何数据。您在这里要小心。如果引用很大(例如,
实际上 是根引用,而不是特定的子项/属性),则您应该找到可以用于检查是否存在的更深的节点,或者以不同的方式设计数据结构,从而可以进行有效的检查。

数据库引用实际上是该数据的URL。您实际上想 获取
数据以查看是否存在孩子。这就是为什么您似乎要寻找的方法位于DataSnapshot上的原因

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
  @Override
  void onDataChange(DataSnapshot snapshot) {
    if (snapshot.hasChild("name")) {
      // run some code
    }
  }
});

现在,这种设计模式有些奇怪。您正在阅读整个数据库,只是为了查看“名称”是否存在。您可以通过侦听rootRef.child("name")然后检查是否有效来使此过程更有效snapshot.exists()

如果您要在此处进行 验证 而不是控制流程,则应考虑将此代码放入rules.json

编辑 :我最初使用错误的函数名称(childExists而不是hasChild)

2020-09-08