0

Firebase docs обложки Фильтрация по заданному дочернему ключу. Но он предполагает, что ценность ребенка известна. Это не распространяется на ситуацию, когда ребенок является динамическим значением (например: Student Ролл номер)Фильтрация динамическим дочерним ключом в Firebase

указано для детей Имя Примера данных

{ 
    "Student1": { 
    "semister": { 
     "english" : 80, 
     "maths" : 60 
    } 
    }, 
    "Student2": { 
    "semister": { 
     "english" : 40, 
     "maths" : 45 
    } 
    } 
} 

Получить студент, набравшие помечает выше, чем 50 в математике

[GET] https://<baseurl>/students.json?orderBy="semister/maths"&startAt=50 

Dynamic Child Имя Пример данных

{ 
    "Student1": { 
    "unit1": { 
     "english" : 80, 
     "maths" : 60 
    }, 
    "unit2": { 
     "english" : 80, 
     "maths" : 60 
    } 
    }, 
    "Student2": { 
    "semister": { 
     "english" : 40, 
     "maths" : 50 
    }, 
    "unit2": { 
     "english" : 80, 
     "maths" : 60 
    } 
    } 
} 

Я получаю ошибку, используя ниже

Получить студентов, набравших помечает выше, чем 50 в математике в любом блоке

[GET] https://<baseurl>/students.json?orderBy="$unit/maths"&startAt=50 

Любая помощь/предложение ценится

+1

Невозможно запросить такой динамический путь. Вы должны будете перестроить свои данные, чтобы разрешить требуемый запрос. По аналогичным вопросам см. [Здесь] (http://stackoverflow.com/questions/36740657/firebase-equalto-dynamic-nested-child/36745707#36745707), [здесь] (http://stackoverflow.com/questions/ 34363511/add-a-listener-to-a-child-in-of-a-firebase-generated-key) и [здесь] (http://stackoverflow.com/questions/29037813/how-to-manage-dynamic -path-in-app-to-firebase-data) (и, возможно, другие из [этого списка] (http://stackoverflow.com/search?q=%5Bfirebase%5D+dynamic+path)) –

ответ

0

Проблема в том, что у вас нет местоположения firebase для всех ваших устройств. Если вы хотите иметь более мощные запросы, вам необходимо сделать ваши данные более реляционными. `

Students: { 
    student1: { 
     units: { 
     unit1:true, 
     unit2:true 
     } 
    }, 
    student2: { 
    units:{ 
     unit3:true, 
     unit4:true 
    } 
    } 
} 
Units: { 
    unit1: { 
    student: student1 
    english: 80, 
    math: 40, 
    }, 
    unit2: { 
    student: student1 
    english: 60, 
    math: 75, 
    } 
    unit3: { 
    student: student2 
    english: 63, 
    math: 29, 
    } 
    unit4: { 
    student: student2 
    english: 20, 
    math: 90, 
    } 
} 

`

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

+0

Хорошее предложение, но Мне нужно сохранить, для которого «Unit Test», то есть «Тип экзамена», для ученика оцениваются оценки. В вашем предположении мне нужно будет сохранить «Тип экзамена» в поле. –

+0

Кроме того, я планировал использовать только «REST API» для получения и отправки данных. Следовательно, если мне нужно выполнить несколько запросов 'GET' (чтобы получить отметки в конкретном типе экзамена) из-за DE-нормализации, это затруднит работу с пользователем. –

Смежные вопросы