最简单的方法是稍微重构一下您的文档。与其将每个“someid”存储为一个属性,不如在 Firestore 文档中创建一个映射数组作为单个属性。例如,您的文档如下所示:
ids: [
{id: someida, name: steve, alias: cap, etc},
{id: someidb, name: tony, alias: iron, etc},
{id: someidc, name: nat, alias: black, etc}
]
其中
id
、
name
、
alias
是对象的属性,
ids
是对象的数组该对象的类型。
现在,您可以轻松地从应用中的该数组中提取所需的数据。由于您可能正在使用 AngularFire,您可以通过在 ngOnInit 中调用以下 API 来检索此文档:
ngOnInit() {
this.users = await this.angularFirestore.collection(YOUR_COLLECTION).doc(YOUR_DOCUMENT).get()
.pipe(map(result => result.data().ids as Array))
.toPromise();
}
getAlias(requestedId: string) {
return this.users.find(ob => ob.id === requestedId).alias;
}
isUserAvailable(requestedId: string): boolean {
return !!this.users.find(ob => ob.id === requestedId);
}
要获取“someidc”的
别名
,可以调用以下函数:
this.getAlias("someidc")
并找出某个 id 是否可用:
this.isUserAvailable("someida")
当然,请务必在调用 Firestore 后调用这些函数。 ngOnInit 应该会为您解决这个问题。