我更新了项目的域类,以前的版本发生了一些不兼容的情况...
我要摆脱大多数人,但是有一种情况是有问题的
我需要从一个特定分支中查找所有firebase节点,该分支的指定字段== null
让我解释一下背景:
我在域类中添加了一些新字段以存储在firebase中...因此,以前存储的所有数据将具有这些字段的null
值,我想检索这些节点...是否有一种简单的方法(请无需复制整个数据库)
这是我的架构:
root
-users
--a
---newField
/*many other irrelevant fields*/
--b
---newField
//so on and so on
我正在尝试做这样的事情:
App.getDatabaseInstance().getReference("users").orderByChild("newField").equalTo(null).addListenerForSingleValueEvent(listener);
但是它总是返回空,我知道有些情况会发生这种情况。
有什么办法可以实现我的意图?
答案 0 :(得分:2)
您无法在数据库中查询不存在的子级。但是您可以做的是删除equalTo(null)
语句,然后将结果与缺少newField
子级的数据一起排序。遍历结果集,直到到达已设置newField
的条目,这意味着您已经处理了所有没有拥有的数据。
请参阅此文档:https://firebase.google.com/docs/database/admin/retrieve-data#ordering-by-a-specified-child-key
任何不具有要查询的子项的节点均以null值排序,这意味着它将在排序中排在首位。有关如何排序数据的详细信息,请参见How Data is Ordered section。