[英]How to retrieve documents stored in one collection from the ids saved in another collection as documents in flutter firestore
使用Get Query读取集合或文档
您可以使用列表视图构建器包装GetUserName
并传递 userId。
class GetUserName extends StatelessWidget {
final String documentId;
GetUserName(this.documentId);
@override
Widget build(BuildContext context) {
CollectionReference users = FirebaseFirestore.instance.collection('users');
return FutureBuilder<DocumentSnapshot>(
future: users.doc(documentId).get(),
builder:
(BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (snapshot.hasError) {
return Text("Something went wrong");
}
if (snapshot.hasData && !snapshot.data!.exists) {
return Text("Document does not exist");
}
if (snapshot.connectionState == ConnectionState.done) {
Map<String, dynamic> data = snapshot.data!.data() as Map<String, dynamic>;
return Text("Full Name: ${data['full_name']} ${data['last_name']}");
}
return Text("loading");
},
);
}
}
我认为您正在构建数据,就好像您在关系数据库中工作一样。 Firestore 不支持 SQL 数据库之类的外键,因此您无法检索 SQL 之类的嵌套数据。 Firestore 是一个没有任何引用概念的非 SQL 数据库。 请参阅Firestore 数据 model 。
在 Firestore 中,关系通常通过存储您想要“引用”的文档的 id 来建模。 从这个意义上说,您可能不需要将“用户”文档存储在“关注者”中,但“用户 ID”字段就足够了(您正在尝试这样做)。 需要注意的是,这种数据布局的代价是必须先从“关注者”获取“user_id”,然后才能获取实际的用户数据。 您可以在文章link1 、 link2和其他线程中阅读有关数据非规范化和建模关系的更多信息。
在 Firestore 中,您需要单独获取引用的数据,或者您可以与关注者数据并行单独获取所有用户数据并将其存储在 map 中,或者如果您最初不需要用户数据,则在需要时获取每个用户数据,例如检查时每个追随者的详细信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.