查询Firebase中的多个值,类似于IN()SQL功能

时间:2015-05-08 20:35:28

标签: angularjs firebase angularfire

我有一个如下所示的数组:

validZipCodes = [
  "84606",
  "84605",
  "84601"
]

我查询了一些这样的数据:

var Jobs = firebase.child('Jobs');

我试过了:

var Jobs = firebase.child('Jobs').orderByChild('ZipCode').equalTo($scope.validZipCodes);

但是它返回了一个错误,它是一个无效的数据类型,无论如何要说:

var Jobs = firebase.child('Jobs').orderByChild('ZipCode').inArray($scope.validZipCodes);

或类似的东西。

请注意,这是一个数组比较&不查询对象中的文本。

2 个答案:

答案 0 :(得分:4)

以下是我最终的表现:

使用foreach命令,您可以轻松地操作数据,然后将其推送到数组中,以便重新创建数据集合,无论您需要它。

$scope.validZipCodes = [];
$scope.validContractorJobs = [];

var Jobs = firebase.child('Jobs');

contractorJobs.on('value', function(snap) {
            snap.forEach(function(job) {
                angular.forEach($scope.validZipCodes, function(value, key) {
                    if(job.val().ZipCode == value) {
                        $scope.validContractorJobs.push(job.val());
                    }
                });
            });
        });

答案 1 :(得分:1)

Firebase .equalTo() documentation声明value参数应为以下类型之一:StringNumberNullBoolean

  • 您收到invalid data-type错误,因为您没有传递其中一种类型。

  • 没有类似.inArray()的方法(即查询equalTo多个值)。

您可以查看Query documentation中的所有Firebase查询方法,其中还建议:

  

请阅读我们关于orderingquerying数据的文档,以获取更多信息和示例。