Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从firebase获取文档?_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

如何从firebase获取文档?

如何从firebase获取文档?,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我正在尝试从firebase获取一个文档并将其添加到Videoplayercontroller。但实际上我不知道怎么做。 这是我的密码 var firestore = FirebaseFirestore.instance; firestore.collection('sendvideos').where("previewimage",isEqualTo: widget.videofile); 我要做的是首先从firebase获取文档,其中previewim

我正在尝试从firebase获取一个文档并将其添加到Videoplayercontroller。但实际上我不知道怎么做。 这是我的密码

      var firestore = FirebaseFirestore.instance;
   firestore.collection('sendvideos').where("previewimage",isEqualTo: widget.videofile);
我要做的是首先从firebase获取文档,其中previewimage字段等于widget.videfile,然后我想从该文档获取videourl以将其添加到此文件中

 controller = VideoPlayerController.network(video)
希望有人能帮忙 这是我的火力基地


如您所见,这里有preiviewimage字段,我将该值保存在widget.videofile中。我需要的是

您需要先获取文档:

 var videoCollectionQuery = await FirebaseFirestore.instance.collection('sendvideos').where("previewimage",isEqualTo: widget.videofile).get(); 
//this will get all the documents that satisfy your 'where' condition, you need to use'get()' and 'await' also.
然后,在获得文档后,您可以获得第一个文档:

String videoUrl = videoCollectionQuery.docs.isNotEmpty ?videoCollectionQuery.docs[0].data()['videourl'] : 'No results found';
// this will get you the map you need, unless the query is empty, it'll return 'No results found'.
我们需要了解Firebase查询是如何工作的。当我们使用
where
子句时,Firebase总是返回
文档的列表。即使您知道Firebase中只存在一个文档,它仍然会在一个列表中返回,该列表只有一个条目。但仍要访问此文档,您需要使用
docs[0]
。如果没有文档满足您的查询,文档将为空,如果您对空文档调用
docs[0]
,它将抛出空错误

这就是为什么我们先检查它是否为空,然后使用
docs[0].data()


MyCategoryData是一个列表

您应该先阅读文档,这可能会有很大帮助,是的,它很有效。我不太理解您[0]的原因,但我打印了值,它似乎有效。我们需要了解firebase查询的工作原理。当我们使用
where
子句时,firebase总是返回
文档的列表。即使您知道firebase中只存在一个文档,它仍将以列表的形式返回,该列表只有一项。但仍然要访问它,您需要使用
文档[0]
。如果没有文档满足您的查询,文档将为空,如果您对空文档调用索引[0],它将抛出错误。这就是为什么我们先检查它是否是空的。好的,有道理,谢谢,也许你可以看看我的2。其他问题。这个呢
  final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  final FirebaseUser currentUser = await _firebaseAuth.currentUser();

  if (currentUser != null) {
    String uidCur = currentUser.uid;
    QuerySnapshot querySnapshot = await Firestore.instance
        .collection("user_category")
        .document(uidCur)
        .collection('categories')
        .getDocuments();

    var x = querySnapshot.documents;

    _myCategoryData.clear();
    notifyListeners();
    x.forEach((f) => _myCategoryData.add(f));