在 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
参数应为以下类型之一:String
、Number
、Null
或 Boolean
.
您收到 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());
}
});
});
});
我有一个如下所示的数组:
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
参数应为以下类型之一:String
、Number
、Null
或 Boolean
.
您收到
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());
}
});
});
});