我正在试用 firebase 数据库,我正在检查推荐的多对多或一对多关系建模方法。
假设我在帖子和用户之间有这种关系: 用户有很多帖子。
这是我的模型设计方法:
class User{
List<String> postIds;
...
}
class Post{
String userId;
....
}
这是根据 firebase 文档 here .
我喜欢这种设计,而不是像 mongodb 样式那样将用户创建的帖子嵌入到用户集合中,这种设计是扁平的;所以以后如果我们只想获取系统上的用户,我们也不必将帖子也拉到用户下。
但我对这种设计的怀疑是,即使将 id 嵌入到帖子中,以后也可能成为问题;假设我有 100 个用户,每个用户有 1000 个帖子。如果我想显示用户列表,我必须提取 100 个用户,这意味着我必须提取 100,000 个帖子 ID。
firebase 有延迟加载的概念吗?即当我获取用户实体时,不应自动加载 postIds;它应该按需加载。
最佳答案
目前 Firebase 中没有“延迟加载”或“按需加载”结构。一个位置下的所有数据在访问时被读取和传输。您可以做的一件事是将 User
和 UserInfo
分离到两个不同的分支,这样您就可以分别访问用户而无需提取过多数据。
class User {
String id;
String name;
String gender etc.
}
class UserInfo {
List<String> postIds;
Other info maintained per user
}
通过这种方式,您可以在不提取额外信息的情况下读取用户。
关于android - 在 Firebase 上延迟加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754148/