firebase - 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
});
});
});
解决方案
应该更容易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
方法即可声明此文档的子集合(即CollectionReference
s)。
推荐阅读
- reporting-services - SSRS 2017 水平轴上自定义标签文本的柱形图的奇怪行为
- reactjs - 使用 api info 并将其等同于数组
- python - 邻里搜索
- java - 将 gradle 插件发布到 jcenter 失败
- python - Jinja2 包含批处理过滤器
- html - 菜单下拉菜单向右对齐
- angular - Using object as as a parameter of get method of Angular
- parameters - 在 Lua 中使用 `arg` 作为参数名称有什么副作用吗?
- reactjs - 如何避免使用 Typescript 在 React 构造函数中重新声明道具类型
- ios - 标签栏控制器显示最后推送的控制器 - swift 4