Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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

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 如何在Flatter上检查firestore中是否存在收藏?_Firebase_Flutter_Dart_Google Cloud Firestore - Fatal编程技术网

Firebase 如何在Flatter上检查firestore中是否存在收藏?

Firebase 如何在Flatter上检查firestore中是否存在收藏?,firebase,flutter,dart,google-cloud-firestore,Firebase,Flutter,Dart,Google Cloud Firestore,我从firestore得到一些数据。有时,当我调用以获取数据时,集合尚未创建。 在调用get请求之前,如何检查集合是否存在 Stream<List<ChatModel>> getChat(ChatFieldModel model) { var ref = _db.collection('chats'); return ref .document(model.docId) .collection('messa

我从firestore得到一些数据。有时,当我调用以获取数据时,集合尚未创建。 在调用get请求之前,如何检查集合是否存在

  Stream<List<ChatModel>> getChat(ChatFieldModel model) {
    var ref = _db.collection('chats');

      return ref
          .document(model.docId)
          .collection('messages')
          .orderBy('timestamp', descending: true)
          .snapshots()
          .map((list) =>
          list.documents.map((doc)=>ChatModel.fromForestore(doc)).toList());
  }

集合的创建或删除不独立于文档。创建文档并将其指定为某个集合的一部分时,如果该集合不存在,则会自动创建该集合。同样,删除集合中的最后一个文档时,该集合将自动删除。因此,在任何情况下,您都不需要担心集合是否已创建,也不需要明确控制集合的创建或删除

集合的创建或删除不独立于文档。创建文档并将其指定为某个集合的一部分时,如果该集合不存在,则会自动创建该集合。同样,删除集合中的最后一个文档时,该集合将自动删除。因此,在任何情况下,您都不需要担心集合是否已创建,也不需要明确控制集合的创建或删除

如果Firestore中不存在文档,则通常会删除该集合

然而,在某些情况下,您可能希望保留集合修改事件的历史记录,或者说出于某种原因阻止删除集合

或者,例如,您想知道一个集合是何时创建的。通常,如果删除文档,然后再次创建集合,您将不知道初始创建日期

我能想到的解决办法如下:

使用一个文档初始化您想要的每个集合,该文档将专门用于保存有关该集合的常规信息

例如:

这样,即使删除了集合中的所有其他文档,您仍然可以保留集合中的一些信息,如果将来需要获取有关集合的一些历史信息,这些信息可能会很方便


因此,要知道是否存在no集合,您可以运行一个查询,检查信息文档中的字段,例如CollectionInfo.exists,以了解已经创建了哪些集合

如果Firestore中不存在文档,则通常会删除该集合

然而,在某些情况下,您可能希望保留集合修改事件的历史记录,或者说出于某种原因阻止删除集合

或者,例如,您想知道一个集合是何时创建的。通常,如果删除文档,然后再次创建集合,您将不知道初始创建日期

我能想到的解决办法如下:

使用一个文档初始化您想要的每个集合,该文档将专门用于保存有关该集合的常规信息

例如:

这样,即使删除了集合中的所有其他文档,您仍然可以保留集合中的一些信息,如果将来需要获取有关集合的一些历史信息,这些信息可能会很方便

因此,要知道是否存在no集合,您可以运行一个查询,检查信息文档中的字段,例如CollectionInfo.exists,以了解已经创建了哪些集合

我以前发过这个

 final snapshot = await firestore.collection(roomName).getDocuments();
 if (snapshot.documents.length == 0) {
 //doesnt exist
 }
希望这有帮助

我以前发布过这篇文章

 final snapshot = await firestore.collection(roomName).getDocuments();
 if (snapshot.documents.length == 0) {
 //doesnt exist
 }

希望这对您有所帮助

您只能通过读取集合中的文档来确定集合是否存在。最便宜的方法是阅读单个文档。你刚才评论了我对这个问题的回答:这个问题和那个问题有何不同?你只能通过阅读一个文档来确定一个集合是否存在。最便宜的方法是阅读单个文档。你刚才评论了我关于几乎完全相同的问题的答案:这个问题与那个问题有何不同?但是,请记住,这会给每个额外的读/写操作带来额外的成本。但是,请记住,这会给每个额外的读/写操作带来额外的成本。