Google firebase检查是否存在孩子

我想在android上创build一个应用程序。 我需要检查我的数据库的一个给定的元素是否有一个给定的名字的孩子。 我希望这可以通过使用以下几点来完成:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); if (rootRef.childExists("name")) { //run some code } 

我搜查,但我没有发现任何有用的东西。 提前感谢您的帮助。

Solutions Collecting From Web of "Google firebase检查是否存在孩子"

编辑2; 值得放在最前面:我认为值得一提的是,这实际上是下载这个快照的所有数据,只是为了检查是否有数据存在。 你应该在这里留意。 如果引用是巨大的(例如, 实际上是根引用而不是特定的子/属性),那么您应该find一个更深的节点,您可以使用它来检查存在或devise不同的数据结构,因此有效的检查是可能的。

数据库引用实际上是该数据的URL。 你想要真正获得数据来看看是否存在一个孩子。 这就是为什么你似乎在寻找的方法是在DataSnapshot上 。

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

现在,这种devise模式感觉有点奇怪。 您正在阅读整个数据库,以查看是否存在“名称”。 通过监听rootRef.child("name") ,然后检查是否存在snapshot.exists()可以提高效率。

如果你想在这里做validation ,而不是控制stream程,你应该考虑把这个代码放在你的rules.json

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

尝试使用.childexists结合.equalTo("Your specific name")