Я хотел бы получить некоторые разъяснения о ценах чтения Cloud Firestore относительно типов Reference
.В моем текущем сценарии у меня есть комната чата, которая отображает список сообщений в разговоре.Сообщение выглядит следующим образом ...
{
"id": "...",
"text": "Hello World",
"createdBy": Reference(/users/userID)
}
При рендеринге сообщения у меня есть доступ к text
, но мне также нужен доступ к пользователю createdBy
.В настоящее время я передаю ссылку createdBy
на другой компонент (в React), а затем извлекаю этот документ для отображения аватара и имени пользователя.
Это работает достаточно хорошо, но я обеспокоен тем, что этоприводит к чтению в базу данных для каждого сообщения в беседе, которое может сложиться очень быстро.Я почти уверен, что это приведет к дополнительным операциям чтения на сообщение, но достаточно ли Firebase достаточно интеллектуален для кэширования пользователей?
Другими словами, если у меня есть 5 сообщений, созданных /users/userA
, будет ли каждое сообщение считатьсячтение в базу данных, или это будет просто одно чтение для каждого пользователя в разговоре?
Если Firebase не может кешировать это, может показаться, что мне нужно денормализовать данные и продублировать имя пользователя иАватара в документе сообщения, а не просто полагаться на саму ссылку.Похоже, что это как бы ограничивает пользу References.