我正在使用Firebase构建一个android应用。该应用程序有用户,这些用户有个人资料图像。用户可以对帖子进行喜欢,创建和评论。我目前具有一个数据结构,其中用户ID,名称和下载图像URL都保存在用户创建的帖子,喜欢对象以及评论对象中。我这样做是因为我不想每次有评论或仅显示名称和个人资料图像时都查询用户对象。这意味着如果有30个帖子,每个帖子都由一个不同的人,我将不得不查询所有30个用户,以获取名称和图片网址。我现在遇到的问题是,每次用户更新该图像时,我都必须浏览并查找所有评论,发表和喜欢的评论,并使用新的downlaod url更新这些评论。有没有更好的方法来保存这些变量,以便于检索和更新。
这是我的帖子对象
public class Post implements Parcelable {
private String postId;
private String title;
private String body;
private CreatedBy createdBy;
private String parentId;
@ServerTimestamp
private Date createdAt;
private Date updatedAt;
public Post(){
}
}
和由对象创建的
Public class CreatedBy implements Parcelable {
private String id;
private String name;
private String imageUrl;
private CreatorType creatorType;
}
答案 0 :(得分:2)
实际上很简单,您只需监听// When redirecting across hosts, drop all authentication headers. This
// is potentially annoying to the application layer since they have no
// way to retain them.
if (!sameConnection(userResponse, url)) {
requestBuilder.removeHeader("Authorization");
}
并使用用户的路径更新实时数据库。
获取一些数据后,您可能会在
Task
中插入图片。
onActivityResult()
答案 1 :(得分:1)
我知道对于谁来自关系数据库世界是很难理解的。我知道这是因为我来自SQL数据库世界。但是当需要更改数据时,存在此重复项的所有地方都需要更新数据。我知道这听起来很糟糕,但是,当我们考虑一天中评论,帖子和喜欢的内容被阅读了多少次,而用户更改个人资料图像的次数相比,这是有道理的。
例如,如果您在注释中仅添加了用户个人资料的密钥,则每当有人请求注释时,您都需要请求注释并请求作者。这大大增加了对数据库的读取。而所有这些只是需要在一个地方更新个人资料图像。