首页 > 解决方案 > AngularFire2(firestore)需要像实时数据库一样一次设置多个文档

问题描述

我正在从 Firebases 实时数据库切换到 Firestore。在如何添加数据方面存在一些差异

我的数据

我有一个产品对象

const productsObj {
    products : [ {...},{...},{...},{...} ]
    meta: {}
}

火力基地

我的预期结构是......

收藏productsObj{}

文件:(productsObj.products若干)

领域productsObj.products[i].name

我的尝试

this.productCollection = this.afs.collection('products'); // compared to productsObj

this.productCollection.add(productsObj); // adds all products as one doc
this.productCollection.add(productsObj.products); // cant add array
this.productCollection.add(productsObj.products[0]); // works

最后一个有效,但对吗?我将不得不遍历几个对象并为每个新文档调用 firebase。

productsObj.products一次将所有内容添加为文档的最佳方法是什么?

EDIT productCollection是这样声明的productCollection: AngularFirestoreCollection<any>;

标签: angularfirebasegoogle-cloud-firestoreangularfire2

解决方案


当您add()访问一个集合时,您正在为每个调用创建一个文档。

你想要这样的东西:

productsObj.products.forEach( (project) => {
  this.productCollection.add(product);
};

请参阅有关将文档添加到集合的 AngularFire2 文档


推荐阅读