Как использовать 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 для запроса поиска по базе данных.
Вы можете проверить это здесь: