Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase-按自定义函数排序(距离)_Firebase_Firebase Realtime Database_Geolocation - Fatal编程技术网

Firebase-按自定义函数排序(距离)

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中有一个列表,其中包括地理位置(经度和纬度),我想得到离给定坐标最近的10个位置

我正在从MySQL过渡,在MySQL中,我将在
选择
中计算距离,并在
排序方式中按它排序


如果我无法从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对其进行修改,因为我知道它比我的用例更快,并且可以实时工作。