【发布时间】:2016-11-11 23:20:05
【问题描述】:
我正在与 Firebase 合作开展一个项目,但我无法理解查询的工作原理。我正在尝试查询并查找在当前用户位置的某个半径范围内的任何其他用户。
我能够创建 geoQuery,但我不确定如何返回位置在半径范围内的用户。
从示例中,key_entered 似乎仅在数据库中的位置更改时才会触发。我所有的位置一旦设置都是静态的,所以我只想做一个查询,然后返回所有瞬时位置在查询范围内的用户。
Geofire 可以做到这一点吗?
我的位置信息是这样保存在 Firebase 中的:
users {
uid: {
location: {
g: 'GeoHash',
l: [lat, long]
}
}
}
这是我的查询:
let geoQuery = geoFire.query({
center: [currentUser.location.l[0], currentUser.location.l[1]],
radius: 1000
});
【问题讨论】:
-
key_entered实际上会被触发,即使位置只是一个静态值并且没有改变。类似于 Firebase 的value事件将使用初始值触发一次,key_entered将为与您的GeoQuery匹配的每个值触发,即使GeoQuery是在该值最后一次更改之后创建的。
标签: javascript node.js firebase firebase-realtime-database geofire