可以在Firebase上查询!equalTo:null吗?

Igo*_*ima 2 javascript firebase firebase-realtime-database angularfire2 angular

我正在使用此查询来验证我的Firebase上是否存在数据(使用AngularFire2)

let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', equalTo: null } });
Run Code Online (Sandbox Code Playgroud)

工作得很好,但我还需要进行反向查询.

像这样

let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', equalTo: !null } });
Run Code Online (Sandbox Code Playgroud)

问题是.第二个查询,仅在值为TRUE时返回,我在/ driveruid/accountHistory/approved'上存储TIMESTAMP

有什么方法可以只验证Value是否存在?

谢谢!

Roh*_*ark 7

在Firebase文档中,orderByChild按以下顺序查询返回列表: -

具有指定子键的空值的子项首先出现.

接下来是指定子键值为false的子节点.如果多个子项的值为false,则按键按字典顺序排序.

接下来是指定子键值为true的子节点.如果多个子项的值为true,则按键按字典顺序排序.

接下来是具有数值的孩子,按升序排序.如果多个子节点具有指定子节点的相同数值,则按键对它们进行排序.

字符串在数字之后出现,并按字典顺序按升序排序.如果多个子节点具有指定子节点的相同值,则按键按字典顺序排序.

对象排在最后,按字典顺序按键按升序排序.

虽然您的第一个查询工作正常,但对于第二个查询,您可以尝试以下代码.

let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', startAt: false });
Run Code Online (Sandbox Code Playgroud)

通过执行此操作,您的查询结果将不包含具有null您的子节点值的数据.

但是,我建议您确保子节点上的数据与所有节点的类型相同,以最大限度地减少类别转换异常和其他错误的可能性.这更像是一个黑客.