Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将firestore中的嵌套集合作为angularfire2和firebase的对象返回_Angular_Firebase_Angularfire2_Google Cloud Firestore - Fatal编程技术网

将firestore中的嵌套集合作为angularfire2和firebase的对象返回

将firestore中的嵌套集合作为angularfire2和firebase的对象返回,angular,firebase,angularfire2,google-cloud-firestore,Angular,Firebase,Angularfire2,Google Cloud Firestore,假设您具有以下结构: shopping-carts (collection) - shopping-cart 1(doc) -- dateCreated (field) -- items (collection) - shopping-cart 2(doc -- dateCreated -- items . . . 那么,我们如何将整个购物车(doc)作为我们定义为的ShoppingCart对象来获取呢 export interface ShoppingCart {

假设您具有以下结构:

shopping-carts (collection)
 - shopping-cart 1(doc)
  -- dateCreated (field)
  -- items (collection)
 - shopping-cart 2(doc
  -- dateCreated
  -- items
 .
 .
 .
那么,我们如何将整个购物车(doc)作为我们定义为的ShoppingCart对象来获取呢

export interface ShoppingCart {
  items: ShoppingCartItem[]
  dateCreated: string
}
afs.doc('shopping-cart/id').valueChanges()
仅返回创建的日期

afs.doc('shopping-cart/id')。collection('items')。valueChanges()
返回项目


将所有功能集于一身并将其创建为对象的简单方法?

可能不是最好的解决方案,但还找不到更好的解决方案

this.shoppingCartsCollection = afs.collection<Servicio>('shopping-carts', 
        ref => ref.orderBy('dateCreated', 'asc'));

this.shoppingCarts = this.shoppingCartsCollection
    .snapshotChanges()
    .map(values => {
       return values.map(value => {

          const shopping-cart = value.payload.doc.data();
          const itemsArray = shopping-cart.items;
          shopping-cart.observableItems = [];

          for (var i = 0, len = itemsArray.length; i < len; i++) {
             itemDocRef = itemsArray[i];
             value.observableItems.push(afs.doc('items/'+ itemDocRef.id).valueChanges());
          }

          return shopping-cart;
       });
    });
this.shoppingCartsCollection=afs.collection('shopping-carts',
ref=>ref.orderBy('dateCreated','asc');
this.shoppingCarts=this.shoppingCarts集合
.snapshotChanges()
.map(值=>{
返回值.map(值=>{
const shopping cart=value.payload.doc.data();
const itemsArray=shopping-cart.items;
shopping-cart.observeItems=[];
对于(var i=0,len=itemsArray.length;i
像任何其他可观察到的数据一样,访问您的项目数据

<div *ngFor="let shoppingCart of shoppingCarts | async">
   <p *ngFor="let observableItem of shoppingCart.observableItems">
      {{(observableItem | async)?.displayName}}
   </p> 
</div>


{{(observeItem | async)?.displayName}


我实际上也处于同样的情况。另外一件对我不起作用的事情是我实际上没有得到items集合。也许我忽略了一些琐碎的事情,但是如果Firebase是一个文档数据库,为什么我不能在一次调用中检索整个文档,包括它的嵌套集合?我是否遗漏了文档数据库的要点?