首页 > 解决方案 > Firestore:如何使用 Dart 将一个集合的多个子集合写入 Firestore

问题描述

作为项目的一部分,我们正在使用 Firestore,我们有一个食谱集合,其中包含三个子集合:成分、方法和注释。

我可以将数据写入一个子集合,但我似乎无法弄清楚如何将第二个子集合写入同一个文档。目前它会生成两个文档。一个用于成分,另一个用于方法。

我们正在生成从 firestore 生成的唯一 ID,我知道我需要使用该文档 ID,但我不知道该怎么做。在网上看,我只能看到如何写入一个子集合而不是两个。

    FirebaseFirestore.instance.collection('recipe').add({}).then((response) {
      print(response.id);
      FirebaseFirestore.instance
          .collection("recipe")
          .doc(response.id)
          .collection("ingredients")
          .add({
        "allergies": allergies,
        "category": categoryValue,
        "description": descriptionController.text,
        "image": "testing",
        "ingredients": ingredients,
        "prepTime": prepTime,
        "protein": proteins,
        "servings": servingsController.text,
        "title": recipeNameController.text
      }).then((response) {
      print(response.id);
      FirebaseFirestore.instance
          .collection("recipe")
          .doc(response.id)
          .collection("method")
          .add({
        "method": methodSteps
      });
    });
    });

标签: firebaseflutterdartgoogle-cloud-firestore

解决方案


应该更容易async/await

var recipeDocRef = await FirebaseFirestore.instance.collection('recipe').add({...});

await recipeDocRef.collection("ingredients").add({...});
await recipeDocRef.collection("method").add({...});
await recipeDocRef.collection("comments").add({...});

recipeDocRef是 a DocumentReference,因此您只需要调用该collection方法即可声明此文档的子集合(即CollectionReferences)。


推荐阅读