gpt4 book ai didi

firebase - 如何在Flutter中使用Firebase创建时间轴供稿?

转载 作者:行者123 更新时间:2023-12-03 04:44:13 25 4
gpt4 key购买 nike

- posts
- userID
- userID
- randomID
- randomID
- followers
- personB userid
- personA userid
- following
- personA userid
- personB userid
这就是我的Firebase集合的组织方式。
我如何为当前登录用户创建时间轴供稿,其中timline帖子应仅来自登录用户的以下列表?
注意:我不想使用Firebase函数,CRUD是否可以?
香港专业教育学院到目前为止尝试了什么。
 getFollowing() async {
QuerySnapshot snapshot = await followersRef
.document(currentUser.id)
.collection('userFollowing')
.getDocuments();
setState(() {
followingList = snapshot.documents.map((doc) => doc.documentID).toList();
print(followingList);
});
}
getTimeline()async{
QuerySnapshot snapshot = await postsRef
.document(followingList)//getting an error here saying list<string> csn't be assigned to string.
.collection('userPosts')
.orderBy('timestamp', descending: true)
.getDocuments();
List<Post> posts =
snapshot.documents.map((doc) => Post.fromDocument(doc)).toList();
setState(() {
this.posts = posts;
});
}

最佳答案

List timelinePosts =[];


getFollowing() async {
QuerySnapshot snapshot = await followersRef
.document(currentUser.id)
.collection('userFollowing')
.getDocuments();
setState(() {
followingList = snapshot.documents.map((doc) => doc.documentID).toList();
print(followingList);
});
}

getTimeline()async{

List posts = [];
for( int i=0; i< followingList.length; i++)
{
QuerySnapshot snapshot = await postsRef
.collections('posts/${followingList[i]}/userPosts')
.orderBy('timestamp', descending: true)
.getDocuments();
posts+= snapshot.data.documents.map((doc) => {'id':doc.documentID,...doc.data}).toList();
}
setState(() {
timelinePosts = timeLinePosts + posts;
});
}


然后您可以在timelinePosts上使用Listview.builder(),
但是,这不是最有效的方法,因为您要一次获取所有帖子。您还可以使用Listview Controller 属性在列表中滚动时实现获取帖子

关于firebase - 如何在Flutter中使用Firebase创建时间轴供稿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62591107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com