Firebase-按自定义函数排序(距离)
我在firebase中有一个列表,其中包括地理位置(经度和纬度),我想得到离给定坐标最近的10个位置 我正在从MySQL过渡,在MySQL中,我将在Firebase-按自定义函数排序(距离),firebase,firebase-realtime-database,geolocation,Firebase,Firebase Realtime Database,Geolocation,我在firebase中有一个列表,其中包括地理位置(经度和纬度),我想得到离给定坐标最近的10个位置 我正在从MySQL过渡,在MySQL中,我将在选择中计算距离,并在排序方式中按它排序 如果我无法从firebase SDK执行此操作,是否有办法添加自定义函数?您可以将其作为请求响应来实现,就像使用云函数所解释的那样: 客户端在最近的/requests/requestID中推送请求。您可以创建一个对象,如requestID:{long:'xxx',lat:'xxxxx'} functions.d
选择
中计算距离,并在排序方式中按它排序
如果我无法从firebase SDK执行此操作,是否有办法添加自定义函数?您可以将其作为请求响应来实现,就像使用云函数所解释的那样:
客户端在最近的/requests/requestID
中推送请求。您可以创建一个对象,如requestID:{long:'xxx',lat:'xxxxx'}
functions.database.ref('/closest/requests').push({
latitude: 'youlat',
longitude: 'yourlong'
});
云函数closest/requests
用于新请求,并将响应设置为closest/responses/requestID
functions.database.ref('closest/requests/{requestID}')
.onCreate(event => {
const request = event.data.val()
const response = getClosest(request.latitude, request.longitude)
functions.database.ref('closest/responses/' + event.params.requestID)
.set({
response: response
})
}
getClosest
应该是一个函数,用于查看数据库中的数据并计算最近的10个位置
我还没有测试过这段代码是否有效,但我认为理解如何实现这一点就足够了。如果您需要进一步的帮助,请告诉我:)我认为您不能用firebase的方法做到这一点。如果你想知道更多的细节,我可以写一个答案:)谢谢。我真的很喜欢可观察/数据流方式,如果云函数也能做到这一点,我希望有一个更详细的答案。查找long和lat数据格式,我发现这可能就是您想要的:。让我知道这是否是您想要的;)这是非常有用的!谢谢。我很快会有一个更深入的研究,但它似乎是我想要的need@DevidFarinelli虽然这非常有帮助,你介意写一个关于这个函数的例子吗?我喜欢。谢谢我将使用geofire对其进行修改,因为我知道它比我的用例更快,并且可以实时工作。