Я получаю результаты из моего collection
, используя 3 поля поиска .
Если this.tag
пусто, я не хочу, чтобы это .where("tagarray", "array-contains", this.tag)
работало, аналогично, если this.dt
пусто .where('lastActivityDate', '>=', this.dt)
не должно работать. То же самое для this.leadstage
.
Как мне управлять этим условием?
loadItems(){
this.firestore.collection('leads' , ref => ref
.where("tagarray", "array-contains", this.tag)
.where('lastActivityDate', '>=', this.dt)
.where("leadstage" , "==" , this.leadstage)
Редактировать 1
Весь мой код этой функции
loadItems(){
this.firestore.collection('leads' , ref => ref
.where("tagarray", "array-contains", "tag1") //tag success
.where('lastActivityDate', '>=', '07-APR-2020') //date success
.where("leadstage" , "==" , 'Prospect') // leadstage success, this is case sensitive
.limit(5)
).snapshotChanges()
.subscribe(response => {
if(!response.length){
console.log("no data available");
return false;
}
this.tableData = [];
for(let item of response){
var data = Object.assign(item.payload.doc.data(), {id : item.payload.doc.id})
this.tableData.push(data);
...
Редактировать 2
Снимок экрана с ошибкой
Редактировать 3
Текущий код
this.firestore.collection('leads' , (ref) => {
let query = ref;
if (this.tag) {
query = query.where("tagarray", "array-contains", this.tag)
}
if (this.dt) {
query = query.where('lastActivityDate', '>=', this.dt)
}
if (this.leadstage) {
query = query.where("leadstage" , "==" , this.leadstage)
}
return query;
}
)
.limit(5)
.snapshotChanges()
.subscribe(response => {
if(!response.length){
console.log("no data available");
return false;
}
...
Ошибки:
В типе 'Запрос' отсутствуют следующие свойства из типа 'CollectionReference': идентификатор, родитель, путь, do c, addts (2739)
Свойство «limit» не существует для типа «AngularFirestoreCollection» .ts (2339)