Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何为instagram等按日期排序的帖子提要构建firestore数据库?_Android_Google Cloud Firestore - Fatal编程技术网

Android 如何为instagram等按日期排序的帖子提要构建firestore数据库?

Android 如何为instagram等按日期排序的帖子提要构建firestore数据库?,android,google-cloud-firestore,Android,Google Cloud Firestore,我的应用程序允许用户销售和购买其他用户发布的产品 我有一个通用的最新帖子片段,在这里我显示了所有用户的最新帖子,不管你是否关注他们。 因此,使用这个aproach(下表),由于firestore中的索引,按时间戳排序的最后30篇文章非常快 users(collection){ user1(document){ username: rocky following:[user2,user3....] // or subcollection with users

我的应用程序允许用户销售和购买其他用户发布的产品

我有一个通用的最新帖子片段,在这里我显示了所有用户的最新帖子,不管你是否关注他们。 因此,使用这个aproach(下表),由于firestore中的索引,按时间戳排序的最后30篇文章非常快

users(collection){    
   user1(document){
    username: rocky
    following:[user2,user3....]     // or subcollection with users as documents
    }
   user2(document){
    username: paul
    following:[user2,user5....]     // or subcollection with users as documents
    }
}

posts(collection){
     post1(document){
     author:user1
     timestamp:...
     imageurl:...
     ...
     }
     post2(document){
     author: user55
     timestamp:...
     imageurl:...
     ...
     }
}
但我也有一个feed片段,它的工作原理与instagram的feed完全相同,它显示了我跟踪的人按日期排序的帖子

我在想,我可以将用户关注的用户存储在一个列表中,或者在每个用户中创建一个子集合,然后当我加载应用程序时,会得到用户ID列表,这就是我不知道如何处理的地方

假设我得到一个5k id的列表,现在我必须搜索所有包含每个id的帖子,获取帖子并按日期排序

我得读5公里,还要读更多的文章。有没有一种有效的方法

我重新研究了一下,发现一个好方法是对数据进行非规范化,并添加一个新集合,如下所示:

feed(collection):{ 
    user1(document){
        posts(collection){
            post1(document){
                //post info
            }
            post2(document)
                //post info
            }
    }
}
但和instagram一样,该应用程序的主要重点是创建帖子,让人们看到。 因此,大多数用户每天都会创建许多帖子

因此,如果我有100个用户,拥有10000个跟帖者,这100个用户每天创建3篇帖子 我希望有300万篇文章只为那100个用户写,如果他们将来编辑那篇文章的话,还要多写几篇,这听起来很吓人

有更好的方法吗

也许我的想法是错误的,如果我有100名用户和10000名追随者,这意味着我的应用程序非常活跃,所以我应该能够创造收入来弥补这一成本


抱歉发了这么长的邮件。非常感谢您的帮助。

我认为这个答案可能会对您有所帮助。如果我以这种方式组织帖子,我需要获得所有用户按日期订购的我的应用程序中最近的100篇帖子(无论作者是谁)。我需要使用组集合查询吗?因为该系统使用了一个索引,我可以按时间戳排序,就像我在顶级集合中的帖子是文档,里面的作者id和日期是字段一样,对吗?是的,我认为这可能行得通。所以首先我查询我跟踪的人的uid,现在我如何查询并告诉数据库:嘿,搜索所有按日期排序的userPost,如果您看到authorId与userFollowing中的任何uid匹配,那么就获取该帖子。我可以像你说的那样,得到我跟踪的每个用户的最后3篇帖子,但是如果一个用户的最后一篇帖子是1年前,我会得到他的最后3篇帖子,但我不会使用它们。该应用程序并不想从我关注的每个用户那里获得相同数量的帖子,它只想让我说一下我关注的所有用户的最后20篇帖子。这是可能的,还是我复制这些帖子更好?