我正在使用flutter
作为后端,cloud firestore
制作我的第一个博客应用程序,我的数据库将包含我所有通过身份验证的用户的详细信息,帖子,喜欢和评论。
由于我是firestore
和flutter
的新手,因此在确定如何构建博客应用程序的数据模型时遇到了很多问题和困惑。
我尝试在我的数据库中对拥有'users'
作为父collection
的用户进行身份验证时存储电子邮件和uid之类的详细信息,该数据库为每个包含documents
的特定用户存储了不同的fields
email:
和uid:
。
问题是,在对用户进行身份验证之后,我允许每个用户自己添加description
,这会显示在我的应用程序中的个人资料页面中,但是在Firestore中,此description
值作为单独的{{1名为document
的{{1}}下的}}。
每次在父collection
下创建两个新的用户注册时,都会创建两个单独的users
,一个将为collection
和documents
拥有两个fields
,另一个将有一个名为email:
的{{1}},其中包含用户uid:
。
验证用户身份之后,这就是我存储用户详细信息的方式:
field
接下来是说明部分,用户将导航到单独的页面,可以在其中添加说明,并通过按下按钮将数据添加到Firestore中:
about:
通过上面的代码可以清楚地看到,我直接将description
添加到了父集合中,而不是在该文件的下面。这是因为我不知道如何添加到集合下的特定文档中。现在不要说使用此 Firestore.instance.collection('/users').add({
'email': user.email,
'uid': user.uid,
}).then((value) {
Navigator.pop(context);
Navigator.push(context, MaterialPageRoute(builder: (context) => Desc()));
}).catchError((e) {
print(e);
});
因为我很难访问由 onPressed: () {
if (FirebaseAuth.instance.currentUser() !=
null) {
Firestore.instance
.collection('users')
.add({"about": about}).then((value) {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => HmPg()));
}).catchError((e) {
print(e);
});
} else {
return false;
}
},
本身分配给每个新用户的自动生成的about
。
请任何人为我的博客应用建议一个更好的数据模型,其中应将Firestore.instance.collection('users').document(...document id...).updateData({"about": about})
分别设为一个documentID
,将google-cloud-firestore
设为一个单独的collection
,其中包含由几个用户,其他单独的集合(如user details
包含引用或与posts
集合和comments
集合有关系,甚至posts
集合也应与{{1 }}集合以及与users
和posts
有关系的users
集合。
请为建议的数据模型提供编码,如前所述,我对flutter和firestore都是陌生的,因此仅在数据模型方面提供帮助而不在编码部分方面提供帮助是不公平的。