你能根据路由器的位置动态更新firestore查询吗



所以,基本上,我有一个简单的React应用程序连接到Firebase,它列出了firestore收藏的不同类型的食物。

示例:

  • 我有几个类别。默认的是";所有";它显示了所有其他可用类别中最受欢迎的8道菜,这一部分很容易,但我希望用户能够点击其他类别并更新我的查询

Category实际上是一个NavLink,它在点击时更新位置,因此:

如果用户点击";Pizza";category的url看起来像这样localhost:3000/Pizza
如果他点击Salad,它是localhost:3000/Salad等

我有一个"墙";组件,它是一个部分,并显示来自firestore的那些项目。

我在此墙组件中的查询参考如下:
const foodRef = db.collection("food").doc("all").collection("items");

但我想动态设置.doc,并在每次更新时进行查询,所以我将查询更改为这样的内容:

const location = useLocation();
const foodRef = db.collection("food").doc('${location.pathname}').collection("items");

当用户点击不同的卡(NavLink(时,url会更新,但查询不会。

我知道这是一个糟糕的解决方案,但实际上我不知道该怎么做
我读过react路由器中的递归路径,但我不知道它是否是我想要的
如果你知道如何处理,请告诉我。


感谢您抽出时间

Firestore不支持查询中的通配符或替换,查询对象是完全不可变的(不能更改(。您必须提前知道文档和集合的名称才能构建查询。如果要更改查询的某些部分,则每次都必须重新生成一个全新的查询对象,然后再次运行查询以获得新的结果集。

最新更新