我使用这个查询来验证我的Firebase上是否存在数据(使用AngularFire2)
let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', equalTo: null } });工作非常好,但我也需要进行反向查询。
像这样
let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', equalTo: !null } });问题是。第二个查询,只有当值为TRUE时,我才会在/driveruid/accountHistory/上存储时间戳。
有什么方法只验证值是否存在?
谢谢!
发布于 2017-07-03 18:45:42
在[消]火源文档中,orderByChild返回列表的查询顺序如下:
具有指定子键的空值的子键优先。 下一个为指定子键值为false的子级。如果多个子级的值为false,则按键进行字典排序。 下一个是指定子键的值为true的子级。如果多个子项目的值为true,则按键进行字典排序。 其次是具有数值的子级,按升序排序。如果多个子节点对指定的子节点具有相同的数值,则按键排序。 字符串在数字之后出现,并按升序按字典顺序排序。如果多个子节点对指定的子节点具有相同的值,则按键按字典顺序排序。 对象排在最后,并按升序按键按字典顺序排序。
虽然第一个查询工作正常,但对于第二个查询,您可以尝试以下代码。
let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', startAt: false });这样,查询结果将不包含子节点的值为null的数据。
不过,我建议您确保子节点上的数据具有相同的类型,以使所有节点尽可能减少发生类强制转换异常和其他错误的可能性。这更像是一次黑客攻击。
https://stackoverflow.com/questions/44891668
复制相似问题