如何在文档 + 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

在上面的代码中 dbpublic db: AngularFirestore 请找到随附的屏幕截图以查看我要在哪里添加收藏集(突出显示)。

我需要的结构是Collection -> Document -> Collection

【问题讨论】:

您遇到任何控制台错误? @GuruprasadRao 我没有收到任何错误 你能subscribesubcollection 看看你得到了什么结果吗? 您的代码应该可以运行,添加("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:通过多个浏览器选项卡通知注销

如何在 AngularFire2 中获取当前用户的访问令牌?

AngularFire2 firestore take(1) on doc valueChanges

使用 angularfire2 时如何访问本机 Firebase 对象?