仅在 collection - Firestore 中从特定文档中检索数据
Retrieve data from a specific document only within a collection - Firestore
我有一个collection,里面有很多文件。我只想单独检索每个文档的时间段,而不是其他 collection 中的时间段。我有办法做到这一点吗?
代码摘录
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
for (var i = 0; i < doc["time"].length; i++)
Padding(
padding: EdgeInsets.symmetric(
horizontal: 10.0,
vertical: 10.0,
),
child: availableSlot(doc["time"][i]),
),
],
)
Firestore 参考
final CollectionReference categoriesDetails =
FirebaseFirestore.instance.collection("collection-name");
如下图所示,我目前正在阅读的是所有其他文档中的数据。我只想根据用户的路径从一个文档中获取数据(只能看到这一行数据,其他的是其他文档中的,应该看不到)
这是我的数据库
您可以使用 doc()
和 get()
方法从集合中的特定文档中获取数据,
方法如下:
/// GetUserTime('barber');
class GetUserTime extends StatelessWidget {
final String documentId;
GetUserTime(this.documentId);
@override
Widget build(BuildContext context) {
CollectionReference users = FirebaseFirestore.instance.collection('categories');
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 Column(
children : data['time'].map((time) => Text(time)).toList());
}
return Text("loading");
},
);
}
}
如果您只想阅读单个文档:
final CollectionReference categoriesDetails =
FirebaseFirestore.instance.collection("collection-name");
final DocumentReference categoryDetails = categoriesDetails.document("barber");
然后您可以在 UI 中使用 StreamBuilder
中的 categoryDetails
,并且会得到一个 DocumentSnapshot
而不是多个 QuerySnapshot
文档。
我有一个collection,里面有很多文件。我只想单独检索每个文档的时间段,而不是其他 collection 中的时间段。我有办法做到这一点吗?
代码摘录
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
for (var i = 0; i < doc["time"].length; i++)
Padding(
padding: EdgeInsets.symmetric(
horizontal: 10.0,
vertical: 10.0,
),
child: availableSlot(doc["time"][i]),
),
],
)
Firestore 参考
final CollectionReference categoriesDetails =
FirebaseFirestore.instance.collection("collection-name");
如下图所示,我目前正在阅读的是所有其他文档中的数据。我只想根据用户的路径从一个文档中获取数据(只能看到这一行数据,其他的是其他文档中的,应该看不到)
这是我的数据库
您可以使用 doc()
和 get()
方法从集合中的特定文档中获取数据,
方法如下:
/// GetUserTime('barber');
class GetUserTime extends StatelessWidget {
final String documentId;
GetUserTime(this.documentId);
@override
Widget build(BuildContext context) {
CollectionReference users = FirebaseFirestore.instance.collection('categories');
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 Column(
children : data['time'].map((time) => Text(time)).toList());
}
return Text("loading");
},
);
}
}
如果您只想阅读单个文档:
final CollectionReference categoriesDetails =
FirebaseFirestore.instance.collection("collection-name");
final DocumentReference categoryDetails = categoriesDetails.document("barber");
然后您可以在 UI 中使用 StreamBuilder
中的 categoryDetails
,并且会得到一个 DocumentSnapshot
而不是多个 QuerySnapshot
文档。