我将在Google的Firebase中实现我的粉丝模型,但我的问题只是理论上的,所以答案并不需要以Firebase术语表示。
我正在创建一个我认为应该具有类似于Tinder的数据结构的应用。这个想法一次只能在您的Feed中显示一个帖子;然后你接受它或拒绝它,另一个弹出,依此类推。我的问题是如何准确地构建数据,以便在应用程序扩展时保持快速。
我现在所拥有的是一个名为" Posts"包含有史以来的每一篇文章。然后,应用程序查询一个帖子,该帖子将根据" ViewedPosts"的用户节点进行检查。因此,如果查询的帖子已经被用户接受/拒绝,则查询另一个帖子,直到找到一个看不见的帖子。这显然不是一个很好的解决方案,因为如果有很多帖子,通过它们的查询将会很慢(特别是如果已经看到很多帖子并且查询必须重复多次)。
我看到了这篇文章:The Firebase Blog: Client-side fan-out for data consistency这让我想到了在每个用户中创建一个节点,这是"看不见的帖子"并且每次有人上传新帖子时,都要将其放入每个用户看不见的文件夹中。这解决了查看器方面的问题,但要上传,必须下载应用程序中所有用户的列表,然后写入每一个用户。
所以问题是,这些之间是否存在中间立场,我可以用它来准确地做到这一点?
谢谢。
编辑:
有人问我的数据结构:
{
"posts": {
"jkldsahjfkds": {
"title": "Simple Post",
"description": "This is my first post",
"numberOfImages": "2",
"price": "14.99",
"timestamp": "51782345",
"postedBy": "-hjd673bbewi7n",
"name": "Ryan Jacobs"
}
"-nisd7enskwes" : {...}
"-asdjfhk7385i" : {...}
"-sdfh49506ndk" : {...}
}
"users": {
"user1": {
"postsViewed": {
"-nisd7enskwes": 51784645,
"-sdfh49506ndk": 51782329
}
"postsLiked": {
"-sdfh49506ndk": 51782329
}
"userData": {
"name": "Albert Jones",
"bio": "Hi! Jow is everyone doing!?",
"location": "London"
}
}
}
}