我正在寻找使用 Firebase 创建社交媒体源。我的数据结构如下:
users: {
uid: {
... // details
}
}
friends: {
uid: {
friends: { // sub collection
fuid: {
... // details
}
}
}
}`
posts: {
postId: {
postedBy: uid
... // details
}
}
现在我试图获取用户所有朋友的帖子,将其限制为最近 10 个帖子,然后创建一个滚动指令来查询下一组 10 个帖子,以便用户不必查询和加载页面加载时为朋友^N 发帖^N。但我不太确定如何以这样有效的方式查询 firebase,查询用户的朋友,然后查询他们的帖子。
我的滚动指令正在工作,取自Jeff Delaney 在 AngularFirebase.com 上的无限滚动课程。 https://angularfirebase.com/lessons/infinite-scroll-firestore-angular/但它只处理整个帖子(教程中的船)集合,而不会在该集合中选择性地查询(以检查用户是否是朋友)。
我能想到的唯一解决方案是查询用户的所有朋友帖子,将其存储在一个数组中,然后根据最后一批加载的帖子将结果分块加载到 DOM 中。如果用户有 100 个朋友,每个朋友都有 100 个帖子,那么从长远来看,这似乎确实效率很低。
如果我没猜错的话,您会为用户朋友列表中的每个用户复制该帖子,对吧?我认为如果您的应用程序升级并不是一个好主意...此时,100k 文档写入的成本为 0.18 美元,因此:
想象一下您的应用程序的用户有 1000 个朋友。当他发布任何内容时,您就会在数据库中进行 1000 次写入。想象一下您有 1000 个像他一样的活跃用户。您现在刚刚进行了 1.000.000 次写入并支付了 1.80 美元。
现在更糟糕的是:您可能在每个帖子上都有一个重复的用户字段显示名称 and a 个人资料图片网址。想象一下,该用户的历史记录中有 500 个帖子,并且刚刚更改了他的个人资料图片。您必须为他的 1000 个朋友的 Feed 中的每个帖子更新其中一个字段,对吗?您将执行 1000 * 500 = 500.000 次写入来更新 profileImageUrl!如果用户不喜欢这张照片怎么办?他尝试了 3 张新照片,现在 10 分钟内您已在数据库中进行了 2,000,000 次写入。这意味着您将需要支付 3.60 美元。这可能看起来并不算太多,但请注意,我们谈论的是单个时刻的 1 个用户。 1000 个用户在同一天更改个人资料图片 4 次,您需要支付 3,600.00 美元。
看看这篇文章:https://proandroiddev.com/working-with-firestore-building-a-simple-database-model-79a5ce2692cb#7709 https://proandroiddev.com/working-with-firestore-building-a-simple-database-model-79a5ce2692cb#7709
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)