Я проверяю в своей базе данных ссылку (которая существует), и я не возвращаю чаты, но не вижу, где.
chat.service.ts:
getUserChats(): Observable<Chat[]> {
let uid = '-1';
this.auth.currUser.subscribe(user => (uid = user.uid));
this.chats = this.afs
.collection('chats', ref => ref.where('members', 'array-contains', `users/${uid}`))
.snapshotChanges()
.pipe(
map(actions => {
return actions.map(action => {
const data = action.payload.doc.data() as Chat;
const id = action.payload.doc.id;
return {id, ...data};
});
})
) as Observable<Chat[]>;
return this.chats;
}
Код предназначен для получения всех чатов, в которых зарегистрированный пользователь является участником. Я делаю это, проверяя массив members, если есть какие-либо ссылки на него.
chat.component.ts:
chats: Observable<Chat[]>;
constructor(private router: Router, public chatService: ChatService, public dialog: MatDialog, public auth: AuthService) { }
ngOnInit() {
this.chats = this.chatService.getUserChats();
}
chat.component.html:
<mat-list-option *ngFor="let chat of chats | async" (click)="handleClick(chatList)" [value]="chat.id">
<img matListAvatar src="./assets/avatar.svg" alt="Avatar Icon">
<h3 mat-line>{{chat.name}}</h3>
<p mat-line>test</p>
</mat-list-option>
Структура чата: