首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果没有数据,如何处理firebase查询

如果没有数据,如何处理firebase查询
EN

Stack Overflow用户
提问于 2020-11-09 19:37:59
回答 1查看 52关注 0票数 0

我正在尝试为父集合中的每个文档获取一个集合及其子集合。编辑过的

代码语言:javascript
复制
  fetchNewMarkets() {
    this.firestore.collection<Market>('markets', ref => {
      const key = `name.ar`;
      return ref.orderBy(key).where('reviewResult', '==', true);
    }).snapshotChanges()
      .pipe(
        filter(snapshot => snapshot.length > 0),
        mergeMap(markets => {
          return combineLatest(
            of(markets),
            combineLatest(
              markets.map(market => {
                return this.firestore.collection<MarketProduct>(`markets/${market.payload.doc.id}/products`)
                  .snapshotChanges().pipe(filter(snapshot => snapshot.length > 0), map(products => {
                    return products;
                  }))
              })
            )
          )
        }), map(([markets, products]) => {
          let returnedMarkets: MarketId[];
          products.forEach(prodArr => {
            returnedMarkets = markets.map(market => {
              return {
                id: market.payload.doc.id,
                ...market.payload.doc.data() as Market,
                products: prodArr
                  .filter(product => product.payload.doc.ref.path === `markets/${market.payload.doc.id}/products/${product.payload.doc.id}`)
                  .map(product => {
                    return {
                      id: product.payload.doc.id,
                      ...product.payload.doc.data() as MarketProduct
                    } as MarketProductId
                  })
              } as MarketId
            })
          })
          console.log(returnedMarkets);
          return returnedMarkets;
        }))
      .subscribe(markets => {
        this.markets = [];
        this.markets = markets;
        this.newMarketsChanges$.next(this.markets);
      })
  }

如果数据不存在问题,但是如果集合或子集合中没有数据,那么它就会失败,并且不会到达订阅

EN

回答 1

Stack Overflow用户

发布于 2020-11-09 19:46:33

在处理数据之前,您是否可以先尝试对管道使用过滤器:

代码语言:javascript
复制
...
....
.snapshotChanges()
      .pipe(
            filter(snapshot=> snapshot.exists),
            mergeMap(markets => {.....
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64750922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档