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

Query on multiple values in Firebase, similar to IN() SQL functionality

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

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);

或者类似的东西。

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

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

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

  • 没有像.inArray()这样的方法(即查询等于多个值)。

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

Read our documentation on ordering and querying data for more information and examples.

以下是我最终的做法:

使用 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());
                    }
                });
            });
        });