Я создаю проект, в котором я хочу извлечь список из запроса, используя firebase 3.0. Я совершенно новичок в этом, но я думаю, что есть простой ответ на мой вопрос.
У меня есть эта структура:
requests : {
luke1 : {
1 : {
.../...
users : {
0 : {
username : joseph,
answered : 0
}
1 : {
username : mark,
answered : 1
}
}
}
}
}
В основном зарегистрированный пользователь (luke1) отправляет запрос нескольким пользователям (joseph и mark) и позволяет сказать, что я зарегистрирован как пользователь: joseph. Я хочу получить список запросов, отправленных в joseph, где еще не ответил
var ref = firebase.database().ref("requests/");
Я хочу знать, как я могу написать запрос.
Спасибо, что нашли время, чтобы прочитать это, и если вам нужна дополнительная информация с моего конца, пожалуйста, дайте мне знать.
При использовании Firebase (и в большинстве баз данных NoSQL) вы часто обнаружите, что в конечном итоге вы моделируете данные для того, как ваше приложение хочет его использовать.
Таким образом, с вами текущей моделью данных, вы можете легко получить запросы, отправленные конкретным пользователем.
ref.child("requests/luke1").on("child_added", ...
Но вы пока не можете легко найти запросы, отправленные конкретному пользователю. Чтобы упростить запрос на эти данные, вы можете добавить структуру перевернутой структуры в свою базу данных:
received: {
joseph: {
0: {
from: luke1
answered: 0
}
}
}
Теперь вы можете легко получить запросы без ответа от joseph:
ref.child("received/joseph").orderByChild("answered").equalTo(0).on("child_added", ...
Ваш первоначальный ответ, скорее всего, плохой тип дублирования данных. Но это на самом деле довольно распространено в базах данных NoSQL.
Существует еще много способов моделирования этой структуры. Для отличного введения в эту тему я рекомендую эту статью по моделированию данных NoSQL.
для достижения такого запроса вам нужно сохранить в переменной currentID вашего пользователя. После этого просто попробуйте что-то вроде следующего запроса:
var ref = firebase.database().ref("request").child(currentUserId).child("users");
Если я не ошибаюсь, он вернет вам запрос, который вы хотите. Надеюсь, что это поможет!