android - 在 Firebase 上延迟加载?

标签 android firebase firebase-realtime-database lazy-loading

我正在试用 firebase 数据库,我正在检查推荐的多对多或一对多关系建模方法。

假设我在帖子和用户之间有这种关系: 用户有很多帖子。

这是我的模型设计方法:

class User{

List<String> postIds;

...
}

class Post{

String userId;

....
}

这是根据 firebase 文档 here .

我喜欢这种设计,而不是像 mongodb 样式那样将用户创建的帖子嵌入到用户集合中,这种设计是扁平的;所以以后如果我们只想获取系统上的用户,我们也不必将帖子也拉到用户下。

但我对这种设计的怀疑是,即使将 id 嵌入到帖子中,以后也可能成为问题;假设我有 100 个用户,每个用户有 1000 个帖子。如果我想显示用户列表,我必须提取 100 个用户,这意味着我必须提取 100,000 个帖子 ID。

firebase 有延迟加载的概念吗?即当我获取用户实体时,不应自动加载 postIds;它应该按需加载。

最佳答案

目前 Firebase 中没有“延迟加载”或“按需加载”结构。一个位置下的所有数据在访问时被读取和传输。您可以做的一件事是将 UserUserInfo 分离到两个不同的分支,这样您就可以分别访问用户而无需提取过多数据。

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/

相关文章:

javascript - Firebase - 检查数据是否有子项

firebase - Face 对象的属性在 firebase ml vision flutter 中始终为 null

javascript - 错误 : container has not been made global - how to solve?

ios - 如何在单个 iOS 项目/应用程序中为发布和 Debug模式(测试和生产环境)制作不同的 Firebase 数据库?

android - 我可以将 android 应用程序的背景作为一组图像吗?

android - SQLDelight 迁移

android - 将 Tab 设为滚动条并仅显示 6 个选项卡中的 3 个

android - 即使在传递 HashMap 参数后也不会调用话语进度监听器

javascript - 在本地测试我的 firebase 身份验证触发器

ios - 获取随机 Firebase 数据库条目