我使用此查询来验证我的 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/approved 上存储时间戳
有什么方法可以只验证值是否存在?
Thanks!
来自Firebase 文档 https://firebase.google.com/docs/database/admin/retrieve-data#section-ordered-data, 查询orderByChild
按以下顺序返回列表:-
指定子键的值为空的子项排在第一位。
接下来是指定子键值为 false 的子项。如果多个子项的值为 false,则它们按键按字典顺序排序。
接下来是指定子键值为 true 的子项。如果多个子项的值为 true,则它们按键按字典顺序排序。
接下来是具有数值的子项,按升序排序。如果指定子节点的多个子节点具有相同的数值,则它们按键排序。
字符串位于数字之后,并按字典顺序升序排序。如果指定子节点的多个子节点具有相同的值,则它们按键按字典顺序排序。
对象排在最后,并按字典顺序按键升序排序。
虽然您的第一个查询工作正常,但对于第二个查询,您可以尝试以下代码。
let aux = this.afData.list("/drivers", { query: { orderByChild: '/accountHistory/approved', startAt: false });
通过这样做,您的查询结果将不会包含值为null
为你的子节点。
不过,我建议您确保所有节点的子节点上的数据都具有相同的类型,以最大限度地减少类转换异常和其他错误的可能性。这更像是一种黑客行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)