我正在使用Java和Cloud Firestore构建社交网络应用。当前,当用户发布帖子时,我捕获了他的UID和photoURL
并将其与帖子内容和其他详细信息一起存储在Posts
集合中。因此,当我在RecyclerView
上渲染这些帖子时,我会使用Glide从存储的URL中加载个人资料图片。但是,这样做的问题是,如果用户更新他的个人资料图片,由于photoUR
L和帖子已耦合,它仍会显示带有较旧帖子的旧图片。有什么方法可以解决此问题,而不必通过每个帖子的UID查询当前的photoURL
,因为那样效率很低?
这是正确的行为,因为您也没有更新它。有什么方法可以解决此问题,而不必为每个帖子都通过UID查询当前的photoURL,因为那样效率很低?
不,没有。没有自动更新。复制数据时,需要牢记一件事。同样,您要添加数据,您需要对其进行维护。换句话说,如果要更新项目,则需要在它存在的每个位置进行更新。因此,在您的情况下,您应该查询数据库以查找每个帖子并更新“旧” URL。还有另一种方法,它不是存储URL,而只是存储对用户的引用。这样,无论用户更新照片多少次,都将始终指向新照片。但是,使用这种方法有一个缺点,因为您总是会为显示的每个帖子创建一个额外的文档阅读。因此,这是在额外读取和保留引用与保留URL和在需要时进行更新之间进行的交易。因此,您可以根据自己的应用情况来估计哪个更好。