【发布时间】:2017-03-03 08:04:57
【问题描述】:
在我的 Android 应用程序中,我需要比较两个 Firebase 数据库查询对象的等价性。我有什么方法可以根据它们的数据库引用和查询参数断言两个查询对象是等价的吗?
Query 类的 Javascript Firebase 版本有一个 isEqual() 方法,可以产生所需的行为。 https://firebase.google.com/docs/reference/js/firebase.database.Query
我在我的 Android 代码中尝试了以下等效测试,但这不会产生预期的行为:
Reference ref = Firebase.getInstance();
String child = "childKey"; //this is a valid child of ref
Query query1 = ref.child(child).limitTo(10);
Query query2 = ref.child(child).limitTo(10);
query1 == query2 //false
query1.equals(query2) //false
【问题讨论】:
-
你试过
orderByChild(child).equalsTo(whatever)吗?或者我认为您应该获取这两个数据并在它们都完全获取时进行比较。 -
我想在 Query 对象上断言 equals 而不是它们包含的数据。通过这样做,我可以避免不必要的网络调用。
-
我很抱歉之前的问题模棱两可。我已经更新了它。
-
嗨,这里是 Firebase 团队的 Doug。这实际上是 Query 的 equals() 实现的一个已知问题。我积极参与了一项让这项工作按您希望的方式工作的提案,但确定这实际上是一个破坏性的 API 更改,这意味着不幸的是,这是一个难以解决的问题。
标签: android firebase firebase-realtime-database