【发布时间】:2020-01-16 19:17:02
【问题描述】:
好的,我的 Cloud Firestore 上有这个结构:
Collection question:
- userID
- text
and Collection user:
- name
- key
我可以轻松地从数据库中检索问题数据并将其返回,但目前没有用户数据。他们我需要在数据库中再次搜索之前返回的 foreach 评论。但是我在尝试这样做时遇到了很多问题。
第一:
我这样做是为了搜索问题:
组件:
export class ListQuestionsComponent implements OnInit {
tableData: Question[] = [];
userData: User[] = [];
constructor(
private questionService: QuestionService,
private userService: UserService,
) { }
ngOnInit() {
this.loadItens();
this.getUsers();
}
loadItens() {
this.questionService.loadItems().subscribe(response => {
this.tableData = [];
for (const item of response) {
this.tableData.push(item.payload.doc.data() as Question);
}
}
问题服务:
loadItems() {
const query = ref => ref
.limit(10);
return this.firestore.collection('perguntas', query).snapshotChanges();
}
这行得通,现在我的 tableData 中有问题。现在我需要为每个问题搜索用户。
我尝试在同一个组件中执行此操作:
getUsers() {
for(const item of this.tableData) {
this.userService.getUserByKey(item.userID).subscribe(response => {
this.userData = [];
for (const user of response) {
this.userData.push(user.payload.doc.data() as User);
}
});
}
}
用户服务
getUserByKey(key: string) {
return this.firestore.collection('users', ref => ref
.where('key', '==', key))
.snapshotChanges();
}
最后,我有一个包含 10 个问题的 tableData,而 userData 一无所有。我不知道现在该怎么办。我只需要在我寻找的问题中引用的用户。
【问题讨论】:
-
您是否考虑过存储问题所需的用户数据?这将允许您提出问题并获得所需的所有数据。为此,在提交问题时,您存储用户的数据,如有必要,您可以使用云功能查找未来的用户信息更改(更改时,更新用户存在的所有问题)。
标签: angular typescript firebase google-cloud-firestore