我目前正在创建一种社交媒体应用程序,就像任何社交媒体应用程序一样,从朋友那里显示某种信息几乎是至关重要的。
我已尝试过各种方式向朋友发布的帖子显示帖子,但速度很慢,我怀疑这是最有效的方法。
起初,我的数据库结构如下:
用户 - > (uid) - >朋友(uid' s) 帖子(帖子ID的数组) 其他信息...
帖子 - > (post id) - > IMAGE_URL 其他信息...
通过此设置我: 1.我拿走了当前登录的用户uid并获得了所属的文档 在"用户"。
下的那个用户然后我将那些用户朋友列表作为一个数组并循环遍历它们。
对于每个uid,我然后查询"用户"再一次找到了这份文件 属于该用户。
然后我拿了第一个" post id"在他们的"帖子"数组,如果有一个
我拿了帖子ID并在"帖子"中找到了相应的帖子。收集并下载它。
对每个用户ID重复步骤3 - 5,直到没有更多帖子,或者我已经下载了10个帖子。
这是我的第一个方法,但是我可以识别出几个问题,而且很可能还有几个我还没想过的问题。
在第2步和第4步中。在这两个步骤中,我正在下载整个数组,因为firestore不允许您下载数组中的某个索引。这会减慢过程,图像是否存在
让我们说用户向下滚动以刷新新帖子然后很难加载更多帖子,因为即使我开始下载我离开的地方,也可以在那个时间添加另一个帖子,这会抛出整个系统
我也正在尝试只收集带有帖子文档的收集呼叫帖子,并附在每个用户身上。
还有其他想法吗?
答案 0 :(得分:0)
如果我正确理解您的问题,您正试图在joins
和user
之间促进posts
(即您希望所有posts
user
firebase.auth().signInAnonymously().catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// ...
});
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
var isAnonymous = user.isAnonymous;
var uid = user.uid;
// ...
} else {
// User is signed out.
// ...
}
// ...
});
{1}}可以看到按时间或相关性排序)。我建议创建一个Firebase函数,用于在用户' feed'下编写记录。当他们的一个朋友创建帖子时收集。该记录将包含帖子的Reference
以及对帖子进行排名/订购的必要信息。然后,您可以进行两个查询(第一个相对快速且可分页)以便为用户提供Feed。如果用户获得了一位新朋友,那么只需拥有另一个Firebase功能即可从该朋友那里获得一些最新的帖子(可能不是从一开始就开始)。