Прежде всего, в Firestore нет выдвинутых идентификаторов.Мы используем метод push () в базе данных Firebase Realtime.В Cloud Firestore мы передаем без аргумента методу document()
, чтобы сгенерировать уникальный идентификатор для документа.
В случае пользователей лучшим уникальным идентификатором является uid
,В случае других коллекций, таких как resturants
, recipes
или любой другой коллекции, вам следует рассмотреть возможность использования идентификаторов, сгенерированных Firestore.
В отличие от базы данных Firebase Realtime, где существует астрономически малая вероятность того, что двапользователи могут генерировать push-идентификаторы в один и тот же точный промежуток времени и с той же точной случайностью, в Cloud Firestore идентификаторы фактически являются чисто случайными (без учета временного компонента).
И как ответ, вы должныобязательно используйте случайные ключи, сгенерированные Firestore.Не используйте простые числа в качестве ключей для ваших документов.
Редактировать: Использование последовательных идентификаторов является анти-паттерном, когда дело доходит до Firebase.Не рекомендуется использовать эту технику ни в Cloud Firestore, ни в базе данных Firebase Realtime, поскольку это вызовет проблемы с масштабируемостью.Чтобы воспользоваться одной из наиболее важных функций Firestore, а именно масштабируемостью, вам следует подумать об этом.Масштабируемость является одной из ключевых функций Firestore, и она проистекает из того, как Firestore распределяет документ по слою хранения.
Использование других методов, а не тех, которые предлагает Firestore, увеличивает коллизии хеширования, что означает, что вы сталкиваетесь с ограничениями записи вкороче времяАбсолютные случайные идентификаторы обеспечивают равномерное распределение записей по всему уровню хранилища.