я создаю социальное приложение на языке Angular, сейчас пытаюсь добавить пользовательский интерфейс поиска, где пользователи смогут искать других пользователей по имени
у меня уже есть пользователи, хранящиеся в firebase firestore, и я хочу найти их по имени ,,, однако я получаю ошибку .subscribe, например
error TS2339: Property 'subscribe' does not exist on type 'void'
Вот мой код:
export class HomeComponent implements OnInit {
ageValue: number = 0;
searchValue: string = "";
items: Array<any>;
name_filtered_items: Array<any>;
constructor(
public firebaseService: FirebaseService,
private router: Router
) { }
ngOnInit() {
this.getData();
}
getData(){
this.firebaseService.getUsers()
.subscribe(result => {
this.items = result;
this.age_filtered_items = result;
this.name_filtered_items = result;
})
}
viewDetails(item){
this.router.navigate(['/details/'+ item.payload.doc.id])
}
capitalizeFirstLetter(value){
return value.charAt(0).toUpperCase() + value.slice(1);
}
searchByName(){
let value = this.searchValue.toLowerCase();
this.firebaseService.searchUsers(value)
.subscribe(result => {
this.name_filtered_items = result;
this.items = this.combineLists(result, this.age_filtered_items);
})
}
combineLists(a, b){
let result = [];
a.filter(x => {
return b.filter(x2 =>{
if(x2.payload.doc.id == x.payload.doc.id){
result.push(x2);
}
});
});
return result;
}
}
FirebaseService.ts:
export class FirebaseService {
constructor( private ngZone: NgZone,) {}
getUsers(){
return firebase.firestore().collection('users').snapshotChanges();
}
searchUsers(searchValue){
return firebase.firestore().collection('users',ref => ref.where('nameToSearch', '>=', searchValue)
.where('nameToSearch', '<=', searchValue + '\uf8ff'))
.snapshotChanges()
}
}