如何在文档 + angularfire2 + angular5 中添加集合
Posted
技术标签:
【中文标题】如何在文档 + angularfire2 + angular5 中添加集合【英文标题】:How to add collection within document + angularfire2 + angular5 【发布时间】:2018-08-06 17:59:16 【问题描述】:我想在文档中添加一个集合,我在谷歌上搜索了很多,但我没有找到任何合适的解决方案。 甚至搜索了 firebase 文档,但我的查询没有结果。
我尝试了不同的方法将集合添加到文档中,下面是我的代码示例。
let tmpObj =
title: vm.pageTitle,
creationDate: dt.getTime()
;
this.db.collection("pages").doc("page_"+this.bookId).collection("Test").add(tmpObj);
另外,我什至尝试过
let mainCollection = this.db.collection("pages").doc("page_"+ this.bookId).collection("test").valueChanges();
let subcollection = mainCollection.push(tmpObj);
// This is also not working for me
在上面的代码中 db 是 public db: AngularFirestore 请找到随附的屏幕截图以查看我要在哪里添加收藏集(突出显示)。
我需要的结构是Collection -> Document -> Collection
【问题讨论】:
您遇到任何控制台错误? @GuruprasadRao 我没有收到任何错误 你能subscribe
到subcollection
看看你得到了什么结果吗?
您的代码应该可以运行,添加("Test").add(tmpObj).catch()
并检查是否有任何错误。您还需要检查您的 Firestore 规则。
【参考方案1】:
下面的代码满足了我的需求,现在我可以在每个文档中创建尽可能多的嵌套集合。
tmpObj =
title: vm.pageTitle,
desc: description,
creationDate: dt.getTime()
this.db.collection('pages').doc("pages_"+ this.bookId).collection<any>("AllPages").doc("page_"+ dt.getTime()).set(tmpObj)
.then(function()
console.log("Pages Created successfully!");
)
.catch(function(error)
console.error("Error writing document: ", error);
);
【讨论】:
【参考方案2】:请尝试:
this.db.collection(`pages/page_$this.bookId/Test`).add(tmpOb);
【讨论】:
【参考方案3】:请试试这个模板
await this.db.collection('mainCollectionName').doc("mainDocID").set(obj);
await this.db.doc('mainCollectionName/mainDocID').collection('subCollectionName').doc('subDocumentID').set(subCollectionObj);
【讨论】:
以上是关于如何在文档 + angularfire2 + angular5 中添加集合的主要内容,如果未能解决你的问题,请参考以下文章
使用 ionic 3 中的 Angularfire2 从 Firestore 获取集合文档的 ID [重复]
AngularFire2 检索不订阅更改(Firestore)
如何在 AngularFire2 中获取当前用户的访问令牌?