在我的应用程序中,我需要检查firebase上数据库的给定元素是否有一个具有给定名称的孩子。我希望可以通过以下方式来做到这一点:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); if (rootRef.childExists("name")) { //run some code }
我进行了搜索,但找不到任何有用的信息。
编辑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()。
rootRef.child("name")
snapshot.exists()
如果您要在此处进行 验证 而不是控制流程,则应考虑将此代码放入rules.json。
rules.json
编辑 :我最初使用错误的函数名称(childExists而不是hasChild)