В моем приложении React Native я пытаюсь вытащить все элементы, у которых свойство selected
установлено в «true» из базы данных. Однако, когда я регистрирую результаты этого запроса, все они возвращаются как null
(хотя ожидаемый ответ должен возвращать два объекта). Мой соответствующий код, а также структура Firebase включены ниже, пожалуйста, дайте мне знать, если вы что-то заметили.equalTo возвращает null от Firebase?
const rootRef = new Firebase(`${ config.FIREBASE_ROOT }`)
var queryRef = rootRef.orderByChild("items/selected");
var solution = queryRef.equalTo("true").once('value', function(snap) {
console.log(snap.val())
});
Firebase JSON:
"items":
[
{
"title":"ball",
"selected": "false"
},
{
"title":"dog",
"selected": "true"
},
{
"title":"phone",
"selected": "false"
},
{
"title":"cup",
"selected": "true"
}
],
Ответ ниже. Но я также заметил, что вы храните элементы в виде массива в дереве JSON, что часто приводит к проблемам. Обязательно прочтите соответствующий раздел в документации Firebase (https://www.firebase.com/docs/rest/guide/understanding-data.html#section-arrays-in-firebase) –
@FrankvanPuffelen thanks-- но я думал в JSON, если у вас есть несколько объектов одного типа, они должны храниться как массив? В этом случае каждый из моих элементов имеет одинаковые атрибуты (тот же тип объекта), поэтому я решил сохранить их в массиве. Как еще мне следует это делать? – user3802348
Прочитайте (документация по Firebase для хранения списков данных) (https://www.firebase.com/docs/web/guide/saving-data.html#section-push). На самом деле, я настоятельно рекомендую вам прочитать, что всего лишь несколько часов, проведенных там, сэкономит гораздо больше времени на линии. –