在我的应用程序中,我需要检查我在 firebase 上的数据库的给定元素是否有一个给定名称的孩子。我希望可以通过使用以下内容来完成:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
if (rootRef.childExists("name")) {
//run some code
}
我搜索了但找不到任何有用的东西。
原文由 zomnombom 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑 2; worth put on top: 我认为值得一提的是,这实际上是下载这个快照的所有数据,只是为了检查是否存在任何数据。你应该注意这里。如果引用很大(例如, 实际上 是根引用而不是特定的子项/属性),那么您应该找到一个更深的节点来检查是否存在,或者以不同的方式设计您的数据结构,以便进行有效的检查。
数据库引用实际上是该数据的 URL。您想实际 获取 数据以查看孩子是否存在。这就是为什么您似乎正在寻找的方法在 DataSnapshot 上。
现在,这个设计模式感觉有点奇怪。您正在读取整个数据库只是为了查看“名称”是否存在。您可以通过收听
rootRef.child("name")
然后检查是否snapshot.exists()
来提高效率。如果你想在这里做 _验证_,而不是控制流程,你应该考虑把这段代码放在你的
rules.json
中。编辑:我最初使用了错误的函数名称(childExists 而不是 hasChild)