Firebase Firestore对两个字段执行orderBy排序报错问题咨询
问题根源
你调用orderBy方法的语法不符合Firestore的接口规范:
- 单个
orderBy方法仅接收两个参数:第一个为待排序的字段名,第二个为可选的排序方向(仅支持asc升序/desc降序,默认值为asc) - 你当前把第二个排序字段
fecha当作排序方向传入了第一个orderBy调用,因此触发参数类型错误。
修复方案
要实现多字段组合排序,需要链式调用多次orderBy方法,排序优先级和调用顺序保持一致,修改后代码如下:
useEffect(() => { const usuariosRef = db.collectionGroup('pedidos') // 先按acudiente升序排列,再按fecha升序排列,需要降序则给对应orderBy传入第二个参数"desc" usuariosRef.orderBy("acudiente").orderBy("fecha").onSnapshot(snapshot => { const tempData = []; snapshot.forEach((doc) => { const data = doc.data(); tempData.push(data); }); setPedidos(tempData); }) }, []);
注意事项
Firestore多字段排序要求提前创建对应规则的复合索引,首次执行该查询如果触发缺少复合索引的报错,按照报错提示创建对应复合索引,等待1-2分钟索引生效后即可正常返回结果。
内容的提问来源于stack exchange,提问作者React Enjoyer
相关产品推荐
相关产品推荐

