如何在firebase中将集合复制为子集合?

时间:2018-01-21 15:51:09

标签: firebase google-cloud-firestore

我有一个users集合和articles集合。每个用户都以articles集合中的所有文章开头,我将其存储为用户的子集合,我只保留用户未阅读的文章。当用户从article集合中读取文档时,我会将其从用户的子集合中删除。问题是当新用户注册时,我必须获取文章集合中的所有文档并将其复制到用户的子集合中,这是不必要的带宽使用。有什么办法可以减少它吗?我的数据库模型是否足够好?

1 个答案:

答案 0 :(得分:1)

我对firestore比对firebase更熟悉,但我可以给你一些想法,直到有人更好地出现!

您可以通过仅保留每个用户的文章ID列表来避免复制整篇文章,这些文章ID可用于在主列表中查找文章。此列表可以是子集合,也可以只是用户文档中的数组。

如果您真的关心带宽,可以在顶级文档中存储所有文章的列表(每次添加或删除文章时都必须更新)。这有点复制,使模型更脆弱(你必须保持两件事同步),但只允许你复制这个小清单。

如果您的文章倾向于按顺序阅读,则另一种方法是,您可以将未读文章列表与指示最新阅读文章的另一个字段组合在一起 - 即使不在文章中,也可以将此文章视为未读名单。然后,新用户将此新字段设置为0以指示没有文章读取。这也意味着您不需要向所有用户添加新文章,因为每个用户在访问您的服务时都会检查比新字段更新的文章。

希望这可以给你一些尝试和玩耍的想法!