Ember数据查询过滤不适用于Firebase

时间:2018-04-25 19:24:18

标签: firebase ember.js firebase-realtime-database ember-data

假设我在Firebase数据库中有以下数据

{
  "carros" : {
    "-LAy3Qqrvq_sIhyLJQED" : {
      "añoFabricacion" : 1932,
      "marca" : "toyota",
      "nombre" : "nombre1"
    },
    "-LAy3r-Gm_NWW9_VkGR3" : {
      "añoFabricacion" : 1931,
      "marca" : "audi",
      "nombre" : "nombre2"
    },
    "-LAy3v9L2wecTDZqpok9" : {
      "añoFabricacion" : 1934,
      "marca" : "toyota",
      "nombre" : "nombre3"
    }
  }
}

我想在控制台中打印属性" nombre"其中" marca"属性等于" toyota"。我写了一个控制器代码如下:

import Controller from '@ember/controller';

export default Controller.extend({
  actions: {
    mostrar() {
      this.get('store').query('carro', {
        filter: {
          marca: 'toyota'
        }
      }).then(function(carros) {
        carros.forEach(function(carro) {
          console.log(carro.get('nombre'));
        })
      });
    }
  }
});

该模型的相应代码" carro.js"是:

import DS from 'ember-data';

export default DS.Model.extend({
  nombre: DS.attr('string'),
  marca: DS.attr('string'),
  añoFabricacion: DS.attr('number')
});

问题在于我获得了以下输出:

nombre1
nombre2
nombre3

但正确的输出必须是:

nombre1
nombre3

为什么我收到此错误?

1 个答案:

答案 0 :(得分:3)

根据此处的文档:https://www.learnhowtoprogram.com/ember-js/ember-extended/firebase-queries

看起来正确的查询如下:

import Controller from '@ember/controller';

export default Controller.extend({
  actions: {
    mostrar() {
      this.get('store').query('carro', {
        orderBy: 'marca'
        equalTo: 'toyota'
      }).then(function(carros) {
        carros.forEach(function(carro) {
          console.log(carro.get('nombre'));
        });
      });
    }
  }
});