我想澄清一下Cloud Firestore与Reference类型相关的阅读价格。在我当前的场景中,我有一个聊天室,可以显示对话中的消息列表。消息看起来像这样..。
{
"id": "...",
"text": "Hello World",
"createdBy": Reference(/users/userID)
}在呈现消息时,我可以访问text,但我还需要访问createdBy用户。目前,我正在将createdBy引用传递给另一个组件(在React中),然后在那里获取该文档以显示用户的头像和用户名。
这工作得很好,但我担心这会导致会话中的每条消息都读取数据库,这可能会很快增加。我几乎可以肯定,这将导致每条消息的额外读取,但是Firebase是否足够智能来缓存用户?
换句话说,如果我有5条由/users/userA创建的消息,那么每条消息是算作对数据库的一次读操作,还是只对会话中的每个用户进行一次读操作?
如果Firebase不能缓存它,似乎我需要反规范化数据,并在消息文档上复制用户名和头像,而不是仅仅依靠引用本身。不过,这似乎限制了引用的好处。
发布于 2019-04-03 04:09:09
缓存的文档将被重用,并且在访问时不会引起读取。不管您是自己创建DocumentReference,还是从另一个文档的字段中获取它。使用DocumentReference读取文档不会导致额外的读取。客户端必须明确地读取它。
https://stackoverflow.com/questions/55482042
复制相似问题