如何针对社交网络应用动态更新Cloud Firestore上的个人资料图片URL?

问题描述 投票:0回答:2

我正在使用Java和Cloud Firestore构建社交网络应用。当前,当用户发布帖子时,我捕获了他的UID和photoURL并将其与帖子内容和其他详细信息一起存储在Posts集合中。因此,当我在RecyclerView上渲染这些帖子时,我会使用Glide从存储的URL中加载个人资料图片。但是,这样做的问题是,如果用户更新他的个人资料图片,由于photoUR L和帖子已耦合,它仍会显示带有较旧帖子的旧图片。有什么方法可以解决此问题,而不必通过每个帖子的UID查询当前的photoURL,因为那样效率很低?

java android firebase google-cloud-firestore firebase-storage
2个回答
0
投票
但是问题是,如果用户更新了他的个人资料照片,它仍然会在旧帖子中显示他们的旧照片
这是正确的行为,因为您也没有更新它。

有什么方法可以解决此问题,而不必为每个帖子都通过UID查询当前的photoURL,因为那样效率很低?

不,没有。没有自动更新。复制数据时,需要牢记一件事。同样,您要添加数据,您需要对其进行维护。换句话说,如果要更新项目,则需要在它存在的每个位置进行更新。因此,在您的情况下,您应该查询数据库以查找每个帖子并更新“旧” URL。

还有另一种方法,它不是存储URL,而只是存储对用户的引用。这样,无论用户更新照片多少次,都将始终指向新照片。但是,使用这种方法有一个缺点,因为您总是会为显示的每个帖子创建一个额外的文档阅读。因此,这是在额外读取和保留引用与保留URL和在需要时进行更新之间进行的交易。因此,您可以根据自己的应用情况来估计哪个更好。


0
投票
这将确保您的数据的一致性。将此代码服务器端放在一边将使您的客户端代码轻巧。
© www.soinside.com 2019 - 2024. All rights reserved.