Как использовать emberfire для запроса базы данных Firebase для всех элементов с именем равным xyz в ember.js 2.0.0?

Я новичок в ember.js и firebase. Я пытался сделать что-то, что мне нужно, чтобы запросить в БД ключ, соответствующий определенному значению.

Согласно guides.emberjs.com, следующий пример должен работать:

this.store.query('person', { filter: { name: 'Peter' } }).then(function(peters) {
  // Do something with `peters`
});

Но это не так. Очевидно, потому что я использую аддон emberfire. После буквально часов поисков не было четкого решения.

Документы emberfire говорят о доступных аргументах.

аргументы

orderBy - String - Свойство...
,
,
,

equalTo - String, Number, Null - Создает запрос, включающий дочерние элементы, которые соответствуют указанному значению.

И представьте пример...

// app/routes/dinosaurs.js
export default Ember.Route.extend({
  model: function() {
    return this.store.find('dinosaur', {
      orderBy: 'height',
      limitToLast: 10,
      startAt: 5
    });
  }
});

Хотя, не показывая, как использовать "equalTo". Я протестировал все из них, но я не смог понять, как equalTo работает.

В SO есть другие решения по этому поводу, но все они до версии 2.0.0. Так что я не думаю, что они будут работать после версии 2.0.0.

Отладочная информация Ember.js:

DEBUG: -------------------------------
DEBUG: Ember      : 2.0.0
DEBUG: Ember Data : 2.0.0
DEBUG: Firebase   : 2.3.1
DEBUG: EmberFire  : 1.6.0
DEBUG: jQuery     : 1.11.3
DEBUG: -------------------------------

Используемая база данных: https://shoutoutdb.firebaseio.com/users

Я не до конца понимаю, как равный должен работать здесь, но я тоже не понимаю. Надеюсь, кто-то здесь будет готов помочь.

Если вы думаете, что вопрос нуждается в каком-либо улучшении, пожалуйста, задавайте. Я подробно изложил это так, как я думал, что должен.
Заранее спасибо.:)

РЕДАКТИРОВАТЬ: Код, который я пытался использовать:

$E.store.find('user',{name:'Alpha'}).then(
    function (data) {
       //stuff done with the data
    }
);

Я также пробовал несколько разных версий вокруг этого кода. Ничего не помогло, так что я не думаю, что стоит упоминать их здесь.

2 ответа

Решение

Используя возможности запросов, вы можете комбинировать orderByChild а также equalTo чтобы получить желаемый результат:

ref.child('people').orderByChild('name').equalTo('Peter').on('value', ...);

Есть пример в справочнике по веб-API для equalTo и в веб-руководстве по сложным запросам.

Таким образом, в EmberFire это будет означать следующее:

this.store.query('person', { orderBy: 'name', equalTo: 'Peter' });

Хотя ответ tstirrat поможет вам в большинстве случаев, есть дополнение Ember для запроса поиска по базе данных.

Вы можете проверить это здесь:

https://www.npmjs.com/package/ember-emberfire-find-query

Другие вопросы по тегам