【问题标题】:Query on multiple values in Firebase, similar to IN() SQL functionality在 Firebase 中查询多个值,类似于 IN() SQL 功能
【发布时间】:2015-07-19 21:05:08
【问题描述】:

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

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

或者类似的东西。

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

【问题讨论】:

    标签: angularjs firebase angularfire


    【解决方案1】:

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

    • 您收到invalid data-type 错误,因为您没有传递这些类型之一。

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

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

    阅读我们关于 orderingquerying 数据的文档,了解更多信息和示例。

    【讨论】:

      【解决方案2】:

      这是我最终的做法:

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

      【讨论】:

        猜你喜欢
        • 2015-05-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-10
        • 2016-10-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多