如何在文档+ angularfire2 + angular5中添加集合

时间:2018-02-27 06:47:57

标签: angular firebase-realtime-database google-cloud-functions angular5 angularfire2

我想在文档中添加一个集合,我在谷歌搜索了很多,但我没有找到任何正确的解决方案。 甚至搜索过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 公共数据库:AngularFirestore 请查看附带的屏幕截图,了解我要添加集合的位置(突出显示)。

我需要的结构是收藏 - >文件 - >集合

enter image description here

2 个答案:

答案 0 :(得分: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);
});

答案 1 :(得分:0)

请尝试使用此模板

await this.db.collection('mainCollectionName').doc("mainDocID").set(obj);
await this.db.doc('mainCollectionName/mainDocID').collection('subCollectionName').doc('subDocumentID').set(subCollectionObj);