Ionic 4 Firestore 是否可以只读取文档的一部分?
Ionic 4 Firestore is it possible to read only a part of a document?
希望你没事!感谢阅读。
编辑了问题。
假设 Firestore 中的一个文档存储了如下对象:
someida: {name: steve, alias: cap, etc}
someidb: {name: tony, alias: iron, etc}
someidc: {name: nat, alias: black, etc}
someidetc
而且我知道所有 "someids",我猜答案可能是否定的,但是
是否可以编写一个只读取其中一个 someids 中的内容的查询?
目前我可以获得我需要的数据,但是在阅读了所有文档和编码后找到它并且想知道是否有可能避免这种情况,并且只读取一个对象的内容因为我有 "someid".
已经有很好的回复了,不知道还有没有其他的建议。
提前致谢!
最好!
最简单的方法是稍微重组您的文档。不是将每个 "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<OBJECT_TYPE>))
.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 应该会为您解决这个问题。
希望你没事!感谢阅读。
编辑了问题。
假设 Firestore 中的一个文档存储了如下对象:
someida: {name: steve, alias: cap, etc}
someidb: {name: tony, alias: iron, etc}
someidc: {name: nat, alias: black, etc}
someidetc
而且我知道所有 "someids",我猜答案可能是否定的,但是
是否可以编写一个只读取其中一个 someids 中的内容的查询?
目前我可以获得我需要的数据,但是在阅读了所有文档和编码后找到它并且想知道是否有可能避免这种情况,并且只读取一个对象的内容因为我有 "someid".
已经有很好的回复了,不知道还有没有其他的建议。
提前致谢! 最好!
最简单的方法是稍微重组您的文档。不是将每个 "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<OBJECT_TYPE>))
.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 应该会为您解决这个问题。