Как применить явную схему данных в базе данных документов, например, в хранилище? - PullRequest
0 голосов
/ 22 сентября 2019

Любой клиентский код (в нашем случае приложение Angular) в какой-то момент будет делать предположения о документах в коллекции: он предполагает наличие определенных атрибутов в определенных состояниях и т. Д.

Другими словами,у нас есть неявная схема данных.

Каковы хорошие способы явного выражения схемы в машинописном тексте и обеспечения выполнения операций БД в соответствии со схемой?

Важно: Мыреализованы версии схемы документа, как атрибут любого документа.Поэтому документы с более старой и новой схемами существуют бок о бок.Например, страны с версией = 1 не должны иметь поле «прописной», тогда как страны с версией = 2 должны иметь его.

Поэтому требуется, чтобы модель схемы поддерживала такие случаи.

1 Ответ

0 голосов
/ 22 сентября 2019

Правила о том, какие данные могут быть сохранены, могут быть применены в правилах безопасности на стороне сервера Firebase .Эти правила обычно используются для контроля доступа (кто может получить доступ к данным?) и проверки данных (какие данные могут быть сохранены?)

Например, это правило позволяет только документамзаписывать, если они имеют поля lastIndex и lastUpdated:

allow write: request.resource.data.keys().hasAll(['lastIndex', 'lastUpdated']) 

Вы также можете проверить тип этих полей и даже их значение.Например, приведенные ниже правила гарантируют, что lastIndex - это число, в то время как lastUpdated всегда должно быть настроено на то же время, что и сервер:

allow write: request.resource.data.keys().hasAll(['lastIndex', 'lastUpdated']) &&
  request.resource.data.lastIndex is int  &&
  request.resource.data.lastUpdated == request.time

По этим правилам безопасности есть несколько отличных видеороликов.теперь в серии Firecasts на YouTube .Это видео о типах данных и глобальных объектах в правилах безопасности Firebase выглядит особенно актуально.

...