, работая над правилами безопасности Firestore, я обнаружил, что нет способа указать доступ на чтение / запись на уровне поля.Все, что можно сделать, это указать доступ на уровне документа / коллекции.
Но разве это не приводит в исполнение действительно странные структуры базы данных?
Рассмотрим этот пример:
[
{
"id": 15,
"name": "room1",
"color": "red",
"owner": "Tim"
},
{
"id": 642,
"name": "room2",
"color": "green",
"owner": "Charles"
},
{
"id": 989,
"name": "room3",
"color": "blue",
"owner": "Jane"
}
]
В этом примере я хочу, чтобы, например, Джейн могла прочитать Поля id
name
и owner
каждой записи в коллекции, но я не хочу, чтобы она видела поле color
изкомнаты других людей.
Это, конечно, было бы возможно с такой структурой данных:
[
{
"id": 15,
"name": "room1",
"owner": "Tim",
"private_values": {
"color": "red"
}
},
{
"id": 642,
"name": "room2",
"private_values": {
"color": "green"
},
"owner": "Charles"
},
{
"id": 989,
"name": "room3",
"private_values": {
"color": "blue"
},
"owner": "Jane"
}
]
Все, что я делал, это просто перемещал "частные" значения (вв этом случае только цвет) в другую дополнительную коллекцию.Таким образом, я могу просто установить правило для корневого объекта и еще одно дополнительное правило для объекта private_values
.
Даже если это вполне возможно, я бы не стал считать его особенно чистым при экстраполяциик большему примеру, где будет, например, больше групп пользователей, которым всем необходимо видеть разные поля.
Есть ли более чистый и лучший способ сделать это, чем тот, который я только что объяснил, илиЕсть ли что-то еще, что я пропустил?
С уважением