我在firebase中有一个列表,其中包括地理位置(经度和纬度),我希望获得给定坐标最近的10个位置。
我正在从MySQL过渡,在那里我将计算SELECT
中的距离,并在ORDER BY
中按其排序。
如果我不能从firebase SDK中执行此操作,是否有办法可以添加自定义函数?
答案 0 :(得分:2)
您可以将此实现为请求 - 响应,就像使用云功能解释here一样:
客户端在closest/requests/requestID
中推送请求。你可以push requestID: {long: 'xxx', lat: 'xxxxx' }
functions.database.ref('/closest/requests').push({
latitude: 'youlat',
longitude: 'yourlong'
});
针对新请求的云功能listens 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个位置的函数。
我没有测试过这段代码是否有效,但我认为它足以理解如何实现它。如果您需要进一步的帮助,请告诉我们。)