我希望用户可以通过更改应用程序中的类别来选择将在墙上显示的不同类型的食物(仅收集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中的结构如下所示:
食物=> [16个文档] =>项目=> [8个文档]
感谢您的时间和帮助,提前通知:)
答案 0 :(得分:1)
您可以使用firestore collectionGroup在不同的文档中获取多个子集合。请查看此链接以获取有关集合组的详细信息。 https://firebase.googleblog.com/2019/06/understanding-collection-group-queries.html
在您的情况下,您可能可以执行以下操作:
const everyItems = await firebase.firestore().collectionGroup('items').get();
让我知道是否需要更多详细信息:)