【问题标题】:Flutter : How can i get collection from document with cloud_firestore?Flutter:如何使用 cloud_firestore 从文档中获取集合?
【发布时间】:2019-07-30 04:05:12
【问题描述】:

我可以从集合中获取所有文档,但是不知道如何从每个文档中获取集合。

我的数据库结构类似于集合 -> 文档 -> 集合(带字段)-> 文档 -> 字段。

使用打击代码,只有我可以获取第一个文档的字段信息,而不是集合。

如何从每个第一个文档访问第二个集合。

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:location/location.dart';

StreamSubscription<QuerySnapshot> subscription;
List<DocumentSnapshot> wallpapersList;


...


class MapPageState extends State<MapPage> {

  final CollectionReference collectionReference =
  Firestore.instance.collection("users");



  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    print(wallpapersList);

    subscription = collectionReference.snapshots().listen((datasnapshot) {
      setState(() {
        wallpapersList = datasnapshot.documents;

      });
    });
}

...

【问题讨论】:

    标签: flutter dart google-cloud-firestore


    【解决方案1】:

    您可以通过document.reference.collection("subcollection")DocumentSnapshot 获取子集合。

    例如:

    wallpapersList.reference.collection("subcollection")
    

    【讨论】:

      【解决方案2】:

      构建一个函数来获取所有文档并返回QuerySnapshot

      Future<QuerySnapshot> getDocuments() async {
          return await Firestore.instance
              .collection('collectionName')
              .document(referenceFromADocument)
              .collection('otherCollectionName')
              .getDocuments();
        }
      

      在您的小部件中,您可以通过 FutureBuilder 访问它

      return FutureBuilder<QuerySnapshot>(
            future: _viewModel.getDocuments(),
            builder: (context, snapshot) {
              snapshot.data.documents.map((document) {
                if(snapshot.hasData){
                  print(document.toString());
                  /// Here you can return a Text widget
                }          
              }).toList()),
            }
      );
      

      希望对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-09-05
        • 2021-12-16
        • 2021-01-01
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-29
        • 2021-07-20
        相关资源
        最近更新 更多