【问题标题】:How to get Firestore collection snapshot via document id如何通过文档 ID 获取 Firestore 集合快照
【发布时间】:2021-09-05 10:26:04
【问题描述】:

我是 Flutter 的新手,我需要这方面的帮助 我正在尝试从 Firestore 集合中获取数据快照 但我需要通过文档 ID 获取此快照结果 这是集合和文档 ID

这是表格

StreamBuilder<QuerySnapshot>(
     stream: FirebaseFirestore.instance.collection('types').snapshots(),
     builder: (context, snapshot2) {
         if (snapshot2.hasData) {
           print(snapshot2.data?.docs);
           return DropdownButtonFormField(
             value: shopId,
             isDense: true,
             onChanged: (val) => setState(() => shopId = val as String?),
             items: snapshot2.data?.docs.map((
                 DocumentSnapshot document) {
               return new DropdownMenuItem<String>(

                 child:Text(document.get('type')),
                 value: document.get('type'),
               );
             }).toList(),

           );
         }
         else
           return Text('error');

     }
     ),

它可以工作,但它会获取具有不同文档 ID 的所有数据

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    第一步正如@HasanToufiqAhamed 所说,只请求流中的一个文档:

     stream: FirebaseFirestore.instance.collection('types').doc("your document id").snapshots(),
    

    然后在您的构建器中,snapshot2.data 变为 DocumentSnapshot 而不是 QuerySnapshot,因此您必须为此更新代码:

    builder: (context, snapshot2) {
      if (snapshot2.hasData) {
        var document = snapshot2.data!;
        return DropdownButtonFormField(
          value: shopId,
          isDense: true,
          onChanged: (val) => setState(() => shopId = val as String?),
          items: List.filled(1, new DropdownMenuItem<String>(
            child:Text(document.get('type')),
            value: document.get('type'),
          ).toList(),
        );
      }
      else
        return Text('error');
      }
    ),
    

    【讨论】:

      【解决方案2】:

      StreamBuilder&lt;QuerySnapshot&gt;StreamBuilder&lt;DocumentSnapshot&gt;

      并像这样更改流查询

      stream: FirebaseFirestore.instance.collection('Product').doc('This is The document Id').snapshots(),

      【讨论】:

      • 在您进行更改后,我在使用 snapshot2.data.docs 时遇到了错误
      猜你喜欢
      • 2019-08-02
      • 2020-12-16
      • 2020-10-12
      • 2020-12-27
      • 2019-09-24
      • 2021-07-12
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      相关资源
      最近更新 更多