Технология: Я использую Angular 7, Firestore, GeoFireX.
Результат, который я хочу: Я хочу добавить запросы .where, если этот запрос требуетсяпользователями.Например, ниже у меня есть четыре.Иногда мне может понадобиться только два, и поэтому я хочу добавить только два, используя, возможно, оператор if, если пользователь выполняет поиск по секторам и марке (см. Метод: basicQueryBuilder)
Код ниже работает, но не является динамическим.
Кроме того, может ли коллекция this.geo.colo из GeoFireX иметь .limit (20) так же, как обычная коллекция?
Текущая попытка:
public getFirestoreJobs(queryType: string, limit: number, pageSize: number): Observable<any> {
limit = limit + pageSize;
if (queryType === 'geo') {
const collection = this.geoQueryBuilder();
const center = this.geo.point(51.5074, 0.1278);
const radius = 20;
return collection.within(center, radius, 'point');
} else {
const collection = this.basicQueryBuilder();
return collection.valueChanges();
}
}
public geoQueryBuilder(): any {
return this.geo.collection('jobs', ref => ref
.where('sector', '==', 'teacher')
.where('brand', '==', 'all')
.where('payType', '==', 'salary')
.where('tags', 'array-contains', 'salary'));
}
public basicQueryBuilder(): any {
return this.angularFirestore.collection('jobs', ref => ref
.where('sector', '==', 'teacher')
.where('brand', '==', 'all')
.where('payType', '==', 'salary')
.where('tags', 'array-contains', 'salary').limit(20));
}
Вторая попытка:
let query = this.angularFirestore.collection('jobs');
query = query.where('sector', '==', 'teacher');
query = query.where('brand', '==', 'all');
return query.valueChanges();
Ошибка, которую я получаю:
Ошибка TS2322: Тип «Запрос» не может быть назначен типу «CollectionReference».