【发布时间】:2023-03-18 22:51:01
【问题描述】:
我的 Ionic 5 应用中有以下 Firestore 数据库结构。
- 书(收藏)
- {bookID}(包含书籍字段的文档)
- 点赞(子收藏)
- {userID}(文档名称为带有字段的用户 ID)
- 点赞(子收藏)
- {bookID}(包含书籍字段的文档)
Book 集合有文档,每个文档都有一个Like 子集合。 Like 集合的文档名称是喜欢该书的用户 ID。
我正在尝试进行查询以获取最新的books,同时尝试从Like 子集合中获取文档以检查我是否喜欢它。
async getBook(coll) {
snap = await this.afs.collection('Book').ref
.orderBy('createdDate', "desc")
.limit(10).get();
snap.docs.map(x => {
const data = x.data();
coll.push({
key: x.id,
data: data.data(),
like: this.getMyReaction(x.id)
});
}
async getMyReaction(key) {
const res = await this.afs.doc('Book/myUserID').ref.get();
if(res.exists) {
return res.data();
} else {
return 'notFound';
}
}
我在这里所做的是使用每个书籍 ID 调用方法 getMyReaction() 并将承诺存储在 like 字段中。后来,我在 HTML 中用async 管道读取like 值。这段代码运行良好,但获得like 值有一点延迟,因为承诺需要时间来解决。有没有办法在获取收藏价值的同时获取子收藏价值?
【问题讨论】:
标签: angularjs firebase ionic-framework google-cloud-firestore