Firebase - 按自定义功能排序(距离)

时间:2017-07-14 21:07:47

标签: firebase firebase-realtime-database geolocation

我在firebase中有一个列表,其中包括地理位置(经度和纬度),我希望获得给定坐标最近的10个位置。

我正在从MySQL过渡,在那里我将计算SELECT中的距离,并在ORDER BY中按其排序。

如果我不能从firebase SDK中执行此操作,是否有办法可以添加自定义函数?

1 个答案:

答案 0 :(得分:2)

您可以将此实现为请求 - 响应,就像使用云功能解释here一样:

  1. 客户端在closest/requests/requestID中推送请求。你可以push requestID: {long: 'xxx', lat: 'xxxxx' }

    这样的对象
    functions.database.ref('/closest/requests').push({
        latitude: 'youlat',
        longitude: 'yourlong'
    }); 
    
  2. 针对新请求的云功能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
        })
    }
    
  3. getClosest应该是一个查看数据库中数据并计算哪些是最近的10个位置的函数。

    我没有测试过这段代码是否有效,但我认为它足以理解如何实现它。如果您需要进一步的帮助,请告诉我们。)