Geofire查询并过滤一些数据(服务器端)以限制带宽使用

时间:2016-09-22 12:09:29

标签: angularjs firebase firebase-realtime-database geofire

我想知道我是否正确使用了Geofire。我最大的问题是Firebase和Geoquery的带宽使用情况 在我的应用程序中,我想收集半径为xxKm的所有“demandes” 使用此geoquery,可以轻松检索所有键。我现在拥有这个区域的所有“demandes”(它们与我的geofire元素具有相同的键)。酷(1500项)。

现在我想收集并向用户发送“demandes”,其中“date1”startAt“19-09-2016”,endAt“27-09-2016”。 (这1500个中只有3个项目)或者只是“date1”startAt“19-09-2016”就足够了所有需要查询没有过滤...

firebase.database().ref('demandes').child(key).orderByChild("date1").
startAt('19-09-2016').endAt('24-09-2016');

遵守此规则

"demandes": {
    "$the_key": {
        ".indexOn": ["date1"]
     } ,
    ".read": true,
    ".write": true,
    ".indexOn": ["date1"]
}

我可以轻松地过滤所有这些数据的客户端,但有一种方法可以节省带宽并做一个简单的过滤服务器端(以节省带宽使用)。

var firebaseRef = firebase.database().ref('geofire_demandes');
var geoFire = new GeoFire(firebaseRef);
var geoQuery = geoFire.query({
     center: [$scope.choice.lat, $scope.choice.lng],
     radius: $scope.data.rayon //kilometers
});


var onKeyEnteredRegistration = geoQuery.on("key_entered", function(key, location, distance) {

    var rootRef = firebase.database().ref('demandes').child(key).orderByChild("date1").startAt('19-09-2016').endAt('24-09-2016');
    rootRef.once("value", function(messageSnapshot) {
    $scope.all_good_datas = ...
    });

});

有没有一种简单的方法可以在不加载所有数据的情况下正确地释放这些数据/并节省带宽和金钱:) 感谢您的所有建议。

0 个答案:

没有答案