2

我正在努力寻找有关使用 firebase firestore、angularfire5 和 angular 5 过滤数据的最佳实践的良好材料。我正在构建一个基于地图的 Web 应用程序,类似于房地产应用程序。我在地图上有需要按不同属性过滤的图钉。你知道我能读到什么好文章吗?或者应该如何最好地解决这个问题。

想到的一些问题是:

  • 客户端过滤与基于查询的过滤?
  • 将数据存储在有助于过滤的 Firestore 中的好方法是什么?

示例对象数据:

{
  "key": {
    "suburb": "Chelsea",
    "lng": 90,
    "lat": -90,
    "street": "Lennox",
    "streetNo": 200,
    "lotSize": 600,
    "city": "langdon",
    "attributeKeys": [
      {
        "key1": true,
        "key2": true,
        "key3": true,
        "key4": false,
        "key5": false
      }
    ]
  }
}

让我们假设以下过滤场景: chelsea 中的所有地图项,手数大于 400,其中 key1 = true 且 key2 = true。

以下是我当前服务的示例:

this.mapItems = Observable.combineLatest(
  this.suburb,
  this.minLotSize,
  this.maxLotSize,
  this.attrbute1Filter,
).switchMap(([suburb, minLotSize, maxLotSize, attrbute1Filter]) =>
  afs.collection('properties', ref => {
    let query: any = ref;
    if (suburb) { query = query.where('address.suburb', '==', suburb) };
    if (minLotSize) { query = query.where('attributes.lotArea', '>=', minLotSize) };
    if (maxLotSize) { query = query.where('attributes.lotArea', '<=', maxLotSize) };
    if (attrbute1Filter) { query = query.where('attributeKeys.key1', '==', subdivisionFilter) }
    return query;
  })
    .valueChanges()
  );

谢谢你的帮助。

4

0 回答 0