Фильтрация запросов Ember Data не работает с Firebase - PullRequest
0 голосов
/ 25 апреля 2018

Предположим, у меня есть следующие данные в базе данных 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 голосов
/ 26 апреля 2018

Основываясь на документации здесь: 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'));
        });
      });
    }
  }
});
...