Получение данных пользователя по uid firebase
Возникла такая проблема, как мне получить данные пользователя по uid? Cтруктура моей БД:
В разделе exam находится userKey и по этому userKey нужно вывести userName в разделе exam. Как это сделать я не совсем понимаю.
Код вывода информации из раздела exam:
export class ExamComponent implements OnInit {
displayedColumns: string[] = ["number", "quiz.title", "insertDate", "userKey", "username", "key", ];
dataSource = new MatTableDataSource();
@ViewChild(MatPaginator, {
static: true
}) paginator: MatPaginator;
@ViewChild(MatSort, {
static: false
}) sort: MatSort;
isLoading = false;
constructor(
private examService: ExamService,
private UserService: UserService,
public dialog: MatDialog,
private snackBar: MatSnackBar
) {}
ngOnInit() {
this.getExams();
}
/*ngOnInit1() {
this.getUsers();
}*/
getExams() {
this.examService.getAll().subscribe(data => {
this.dataSource = new MatTableDataSource(data.reverse());
setTimeout(() => {
this.dataSource.filterPredicate = (
data: {
quiz: string
},
filterValue: string
) =>
data.quiz["title"]
.trim()
.toLowerCase()
.indexOf(filterValue) !== -1;
this.dataSource.paginator = this.paginator;
this.dataSource.sort = this.sort;
}, 100);
this.isLoading = true;
});
}
Класс exam:
import { Quiz } from './quiz.model';
import { User } from './user.model';
export class Exam {
key?: string;
userKey: string;
quiz: Quiz;
user: string;
correct: number;
mistake: number;
unanswered: number;
insertDate: string;
}
запись, удаление , чтение данных из бд:
import { Injectable } from "@angular/core";
import { Exam } from "../models/exam.model";
import { mapToModel } from "../shared/utils/app.mapper";
import { AngularFireDatabase } from "@angular/fire/database";
import { User } from "firebase";
@Injectable({
providedIn: "root"
})
export class ExamService {
constructor(private db: AngularFireDatabase) {}
add(exam: Exam) {
this.db.list(`exams/`).push(exam);
}
get(key: string) {
return this.db.object<Exam>(`exams/${key}`).valueChanges();
}
getAll() {
return mapToModel(
this.db
.list<Exam>(`exams`, ref => ref.orderByChild("username"))
.snapshotChanges()
);
}
update(exam: Exam, key: string) {
this.db.object(`exams/${key}`).update(exam);
}
delete(key: string) {
this.db.object(`exams/${key}`).remove();
}
}
