我正在努力寻找有关使用 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()
);
谢谢你的帮助。