仅在 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文档。