#firebase #google-cloud-firestore
#firebase #google-облако-firestore
Вопрос:
Для меня все auto id, сгенерированные клиентом Android в коллекции Firestore, похоже, соответствуют определенным критериям:
- длина 20 символов
- Начните с
-
тире - Кажется, что символы перебираются в зависимости от времени?
Под последним пунктом я подразумеваю, что первые символы будут выглядеть очень похоже, если создание произошло в аналогичные временные рамки, например -LZ..
, -L_..
и -La..
. Это описывает реализациюFlutter.
Однако, глядя на реализацию auto id на Javascript, я бы предположил, что единственным общим критерием для всех клиентов является длина в 20 символов. Верно ли это предположение?
Комментарии:
1. То, что вы описываете в маркированных пунктах, похоже на идентификаторы отправки базы данных в реальном времени, а не на идентификаторы документов, сгенерированных Firestore. Вы ссылаетесь на Firestore.
2. Также может быть полезно сказать, почему вам нужно это знать — планируете ли вы написать какой-то код, зависящий от того, что генерирует один из этих идентификаторов?
3. Да, решение о том, что он хочет сделать с этими идентификаторами, полностью зависит от клиента. Серверу все равно. Вы могли бы создать свой собственный, если хотите. Я не уверен, как использование правила безопасности улучшит ситуацию для вас. Это просто случайный идентификатор, предназначенный для того, чтобы быть достаточно случайным, чтобы практически не было вероятности столкновения с другими идентификаторами.
4. «Правила безопасности должны зависеть от этого». На самом деле, они не должны. Идентификаторы Push (и другие автоматически сгенерированные идентификаторы) следует рассматривать как непрозрачные идентификаторы. Любое значение, которое вы выводите из них, может в какой-то момент нарушиться. Тем не менее: если вам интересно, как база данных реального времени генерирует свои push-идентификаторы (которые в настоящее время начинаются с
-L
), смотрите firebase.googleblog.com/2015/02 /…
Ответ №1:
Для всех клиентов идентификатор auto id имеет длину 20 символов:
Ответ №2:
Вы имеете в виду два типа идентификаторов:
- Идентификаторы push в том виде, в каком они генерируются Firebase Realtime Database SDK при вызове
DatabaseReference.push()
(илиchildByAutoId
в iOS). Они описаны в 2 ^ 120 способах обеспечения уникальных идентификаторов, а реализацию JavaScript можно найти здесь . - Идентификаторы аутентификации, которые генерируются облачным Firestore SDK при вызове
add(..)
ordoc()
(без аргументов). Реализацию этого на JavaScript действительно можно найти в репозитории Firestore SDK.
Единственное, что объединяет эти два идентификатора, это то, что они разработаны для обеспечения достаточной энтропии, чтобы реально они были глобально уникальными, и что они оба имеют длину 20 символов.
Комментарии:
1. Нет, я имел в виду реализацию Cloud Firestore для Flutter.