对于由文章组成的新闻提要(如附件中所示),在使用Firestore时,加载与每个帖子对应的用户名和用户图片的最佳方法是什么?

修复集合:
user
- userId
- userName
- userPic
post
- postContent
- postDate
- userId // refers to the userId of a user stored in the users collection在中,如何以最有效的方式加载最新的10篇文章--其中包含相应的用户名和用户图片?
我认为对我不起作用的解决方案:
在发送结果之前,是否有一种方法可以让Firestore将用户数据与其末尾的帖子结合起来?(就像在实际数据库管理系统中那样)
发布于 2018-10-08 13:09:31
你猜对了,在前两种情况下,第三种情况可以解决你的问题。因为在Cloud中,Reference是一个支持的数据类型,所以您可以利用这个特性:
projects/PROJECT_ID/databases/DATABASE_ID/documents/DOCUMENT_PATH
所以您可以保存对用户对象的引用,这样您就可以很容易地获得它的详细信息。的确,你需要额外的阅读,但这是我能想到的最简单的方法,这样你就能实现你想要的。
您还可以通过添加用户对象作为post对象的属性来对数据进行去denormalize,但这意味着要对所有用户对象进行额外的更新,以防用户更改名称。因此,在这种情况下,您有太多额外的写操作。这种做法称为denormalization,在Firebase方面是一种常见的做法。为了更好的理解,我推荐你看这段视频,在Firebase数据库中,取消规范化是正常的。它适用于Firebase实时数据库,但同样的规则适用于。所以,多少复制数据和额外的数据库调用对你来说是最佳的,这取决于你的应用程序的用例和你的需求,以及你是否愿意放弃“单点定义思维”。
https://stackoverflow.com/questions/52702336
复制相似问题