Firebase检索具有空字段的节点

时间:2018-12-26 04:32:03

标签: android firebase firebase-realtime-database

我更新了项目的域类,以前的版本发生了一些不兼容的情况...

我要摆脱大多数人,但是有一种情况是有问题的

我需要从一个特定分支中查找所有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);

但是它总是返回空,我知道有些情况会发生这种情况。

有什么办法可以实现我的意图?

1 个答案:

答案 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