Flutter firestore 在文档中添加集合和数据

ram*_*han 1 firebase flutter google-cloud-firestore

我想添加数据和集合我正在尝试这样

  Future<void> createRoom(collection, docid, data) async {
    await FirebaseFirestore.instance
        .collection(collection)
        .doc()
        .set(data)
        .collection('messages');
  }
Run Code Online (Sandbox Code Playgroud)

但它显示错误The method 'collection' isn't defined for the type 'Future'.

Dha*_*raj 5

如果您尝试在子集合中设置文档,请首先创建对该集合的 DocumentReference,然后使用set()

await FirebaseFirestore.instance
  .collection(collection)
  .doc("doc_id")
  .collection('messages')
  .doc("msg_id")
  .set(data)
Run Code Online (Sandbox Code Playgroud)

请注意,您应该传递文档 ID,否则doc()每次都会生成一个随机 ID,而不是更新现有 ID。


我想同时添加数据和集合

如果您尚未添加文档,则无需显式创建集合。它将在您在集合中添加第一个文档时创建。因此尝试重构代码,如下所示:

Future<void> createRoom(collection, docid, data) async {
  await FirebaseFirestore.instance
    .collection(collection)
    .doc("doc_Id")
    .set(data);

  // simply add a document in messages sub-collection when needed.
}
Run Code Online (Sandbox Code Playgroud)

另请查看:如何从 Javascript 在 Cloud Firestore 中创建集合?