【发布时间】:2020-09-14 15:02:25
【问题描述】:
我希望用户能够通过在我的应用中更改类别来选择将显示在墙上的不同类型的食物(仅收藏 8 项)。
我有两个想法如何做到这一点,但我不知道它们是否好。
首先是从 Firestore 中仅获取所选类别的项目。示例:
const foodRef = db.collection("food").doc('${category}').collection('items');
然后获取这些项目,然后使用这些项目设置状态。
这就是我现在的做法,它运行良好,但我认为它不好,因为每次用户更改类别组件时都必须重新渲染,并且用户正在对 firestore 进行不必要的查询。
所以我认为最好从每个文档中获取所有“项目”并将其存储在一个对象中,然后根据所选类别对该对象进行操作。
我的问题是我试图获取集合中每个文档的子集合,但我实际上不知道该怎么做。
我尝试过这样的事情:
const getItems = async () => {
let snapshot = await firebase.firestore().collection('food').get();
return snapshot.docs.map(doc => doc.collection('items').forEach(item => item.data()))
}
我知道这行不通,但我想做类似的事情。
我的 Firestore 中的结构如下所示:
food => [16 个文档] => items => [8 个文档]
那么我应该怎么做,一次获取所有项目或每次用户更改类别时呈现?
提前感谢您的时间和帮助伙计们:)
【问题讨论】:
标签: reactjs firebase google-cloud-firestore