使用Firebase(firestore)和Angular 5

时间:2018-02-09 11:10:10

标签: javascript firebase google-cloud-firestore angular5 angularfire5

我正在努力寻找关于使用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()
  );

感谢您的帮助。

0 个答案:

没有答案