Ответ 1
Вы определяете индексы для /users
. Не существует дочернего элемента node users
прямо под корнем вашего дерева, поэтому эти индексы будут пустыми.
Вы запрашиваете /movieLens/users
, чтобы определить индекс:
{
"rules": {
"movieLens": {
"users" : {
".indexOn": ["age", "gender", "occupation", "zipCode"]
},
".read": true,
".write": true
}
}
}
Обновление для проблемы в комментариях:
Вы сохраняете возраст пользователя как строку, поэтому не можете фильтровать их как число. Решение состоит в том, чтобы исправить ваши данные и сохранить их как число.
Но пока этот запрос несколько работает:
https://movielens3.firebaseio.com/movieLens/users.json?orderBy="age"&equalTo="35"
В JavaScript:
ref
.orderByChild('age')
.startAt('35')
.limitToFirst(3)
.once('value', function(s) {
console.log(JSON.stringify(s.val(), null, ' '));
}, function(error) {
if(error) console.error(error);
})
"Несколько" заключается в том, что он делает лексический вид, а не численный. Исправьте данные для реального решения.
Обратите внимание, что вы также игнорируете лучшие методы Firebase, сохраняя данные в виде массива. Это уже вызывало проблемы для меня в REST API, поэтому я сбросил print=pretty
. Я настоятельно рекомендую вам прочитать руководство по программированию Firebase для разработчиков JavaScript от начала до конца и следовать советам там. Несколько часов, которые уходят сейчас, предотвратят многочасовую проблему вниз.