编辑2; 值得放在最上面:我认为值得一提的是,它实际上是在此快照中下载所有数据,只是为了检查是否存在任何数据。您在这里要小心。如果引用很大(例如,
实际上 是根引用,而不是特定的子项/属性),则您应该找到可以用于检查是否存在的更深的节点,或者以不同的方式设计数据结构,从而可以进行有效的检查。
数据库引用实际上是该数据的URL。您实际上想 获取
数据以查看是否存在孩子。这就是为什么您似乎要寻找的方法位于DataSnapshot上的原因。
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();rootRef.addListenerForSinglevalueEvent(new ValueEventListener() { @Override void onDataChange(DataSnapshot snapshot) { if (snapshot.hasChild("name")) { // run some pre } }});现在,这种设计模式有些奇怪。您正在阅读整个数据库,只是为了查看“名称”是否存在。您可以通过侦听
rootRef.child("name")然后检查是否有效来使此过程更有效snapshot.exists()。
如果您要在此处进行 验证 而不是控制流程,则应考虑将此代码放入
rules.json。
编辑 :我最初使用错误的函数名称(childExists而不是hasChild)



