Я использую базу данных Firebase для хранения базы данных учеников / учителей. Прямо сейчас мои правила позволяют учителям читать данные своего ученика, вызывая вызываемую функцию, которая предоставляет данные, относящиеся к ученику. (Firebase admin sdk)
Что я пытаюсь сделать -
- Разрешить учителям пригласить учащихся добавить их в свой список учеников. Учителя могут отправить приглашение, вызвав http firebase функцию , чтобы отправить приглашение по электронной почте.
- Как только ученики нажимают на ссылку приглашения, чтобы принять, они добавляются под учителем, который отправил им приглашение.
- После принятия учитель может прочитать данные всех учеников, зарегистрированных под ним, вызвав вызываемую функцию . Вот где у меня проблема. Я могу читать без проблем, но вызов функции каждый раз, когда страница refre sh, будет дорогостоящим, поэтому я решил поиграть с правилами firebase.
Ниже моя структура базы данных Firebase. Как я могу разработать правило базы данных таким образом, чтобы учитель мог читать данные своего ученика, не вызывая вызываемую функцию.
Я обнаружил нечто подобное в этом сообщении stackoverflow -
DATABASE
{
"teachers":
{
"teacher-unique-id":
{
"invited":
{
"auto-gen-key-id": "student-email-id-1",
"auto-gen-key-id": "student-email-id-2",
"auto-gen-key-id": "student-email-id-3",
"auto-gen-key-id": "student-email-id-4",
"auto-gen-key-id": "student-email-id-5",
},
"accepted":
{
"auto-gen-key-id": "unique-student-id-1",
"auto-gen-key-id": "unique-student-id-2",
"auto-gen-key-id": "unique-student-id-3",
}
}
},
"students":
{
"unique-student-id-1":
{
"session-id-1":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
},
"session-id-2":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
}
},
"unique-student-id-2":
{
"session-id-1":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
},
"session-id-2":
{
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
"auto-gen-key-id": "data",
}
}
}
}
Правила Firebase - это в основном по умолчанию, который я использую. Как я могу изменить их, чтобы сделать то, что я хочу достичь?
{
/* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
"rules": {
"teachers":{
"$uid":{
"studentsId":{
".read": "$uid===auth.uid",
}
}
},
"students":{
"$uid":{
".read": "$uid===auth.uid",
".write": "$uid===auth.uid"
}
}
}
}