На мой взгляд, структура вашей базы данных достаточно хороша.Что я могу посоветовать для внесения изменений, так это тот факт, что вы храните команду, частью которой является пользователь в узле users
, что может усложнить запрос при наличии нескольких команд.
Вы должны были бы поставить ложь во многих из них и поставить истину в некоторых из них в соответствии с вашими требованиями.
Вы должны просто разместить информацию о команде только в узле teams
, а другие важные сведения о пользователе в узле users
.
Кроме того, если у самой команды естьname, затем присвоение ему имени team1
в структуре с указанием правильного имени, кажется излишним по сравнению с тем, что вы сказали в вопросе.
Итак, ваша структура базы данных должна выглядеть примерно так:
users:{
user1:{
name: "username",
profilePicUrl: "https://...",
otherInfo : ...
},
user2:{
...
}
}
teams:{
SuperTeam{
otherInfo: ...
members:{
user1: true,
user2: true,
....
}
},
MegaTeam {
otherInfo: ...
members:{
user1: true,
user2: true,
....
}
}
}
Теперь для удаления команды скажем, MegaTeam
, вам просто нужно удалить один узел из узла teams
,и информация об участниках также будет удалена, поэтому вам не придется запрашивать снова, чтобы удалить команды и другую информацию из узла users
.
РЕДАКТИРОВАТЬ:
Поскольку вы используете Firebase, (noSQL) лучшее, что вы можете изменить базу данных и адаптировать ее под свои нужды.Поэтому я бы сказал, что лучшим способом было бы создать отдельную структуру для получения команд с пользователем.