【发布时间】:2018-10-11 05:44:59
【问题描述】:
我正在使用 AngularFire2 库在 firebase 中进行查询。在我的 firebase 中,我有 data 集合,在其中,我有很多行带有 latitude 和 longitude,如下所示:
- data
- 1404033346513076_1998422263740845
- location
- latitude: 23.7907795
- longitude: 90.403898
- 1404033346513076_1998422263740888
- location
- latitude: 23.9907795
- longitude: 91.403898
我有我当前位置的latitude 和longitude,并且我有一个辅助函数,可以确定当前位置与来自 Firebase 数据的位置之间的距离(以米为单位)。假设,函数如下:
calculateDistance(currentLoc, destLoc) {
return routeDistance(currentLoc, destLoc); // It return in meters
}
现在,我需要一个查询,它将从 firebase 返回 10 行,这些行与当前位置的距离最远。
我知道,我可以在 firebase 中进行如下查询:
constructor(private firebaseDBProvider: AngularFireDatabase) {
}
getDatas(): any {
return this.firebaseDBProvider.list('data', ref => ref.orderByChild("location").startAt(0).endAt(3));
}
但是,它不会提供我想要的确切数据。
另一件事,我注意到,当我在查询下运行时,它返回前 10 行。
return this.firebaseDBProvider.list('data', ref => ref.limitToFirst(10));
但是,如果要执行下面的查询,它会返回 0 行。
this.firebaseDBProvider.list('data', ref => ref.startAt(0).endAt(10));
这是为什么呢? startAt 和 endAt 应该与 limitToFirst(10) 一样工作。
那么,查询应该是什么,以便我可以返回 10 行,这些行是距我当前位置排序距离 内的?
【问题讨论】:
标签: firebase ionic-framework firebase-realtime-database ionic3 angularfire2