首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cloud Firestore:在文档上获取引用会导致对数据库的额外“读取”吗?

Cloud Firestore:在文档上获取引用会导致对数据库的额外“读取”吗?
EN

Stack Overflow用户
提问于 2019-04-03 03:17:10
回答 1查看 152关注 0票数 2

我想澄清一下Cloud Firestore与Reference类型相关的阅读价格。在我当前的场景中,我有一个聊天室,可以显示对话中的消息列表。消息看起来像这样..。

代码语言:javascript
运行
复制
{
  "id": "...",
  "text": "Hello World",
  "createdBy": Reference(/users/userID)
}

在呈现消息时,我可以访问text,但我还需要访问createdBy用户。目前,我正在将createdBy引用传递给另一个组件(在React中),然后在那里获取该文档以显示用户的头像和用户名。

这工作得很好,但我担心这会导致会话中的每条消息都读取数据库,这可能会很快增加。我几乎可以肯定,这将导致每条消息的额外读取,但是Firebase是否足够智能来缓存用户?

换句话说,如果我有5条由/users/userA创建的消息,那么每条消息是算作对数据库的一次读操作,还是只对会话中的每个用户进行一次读操作?

如果Firebase不能缓存它,似乎我需要反规范化数据,并在消息文档上复制用户名和头像,而不是仅仅依靠引用本身。不过,这似乎限制了引用的好处。

EN

回答 1

Stack Overflow用户

发布于 2019-04-03 04:09:09

缓存的文档将被重用,并且在访问时不会引起读取。不管您是自己创建DocumentReference,还是从另一个文档的字段中获取它。使用DocumentReference读取文档不会导致额外的读取。客户端必须明确地读取它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55482042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档