Firestore按category筛选后调用orderBy按rating排序异常如何解决?
问题解决方案
1. 调整排序方向
你当前使用的orderBy("rating")默认按照升序排序,会优先返回评分更低的内容。要实现评分越高排名越靠前的需求,需要指定排序方向为降序,修改为orderBy("rating", "desc")即可。
2. 创建复合索引
Firestore 要求对A字段做等值where查询后,再对B字段做排序的场景,必须提前创建对应[A字段, B字段]的复合索引,否则查询会直接报错。
你可以直接从代码运行时的报错日志中获取一键创建索引的跳转入口,进入Firestore控制台后直接确认创建即可,索引创建通常需要1~2分钟,生效后查询即可正常运行。
修正后代码
const snapshot = await firebase.firestore().collection('Locations') .where("category", "==", type) .orderBy("rating", "desc") .get(); if (snapshot.empty){ console.log('No matching documents'); return; } snapshot.forEach(doc=> { locList.push(doc.data()); })
参考数据结构

内容的提问来源于stack exchange,提问作者Chang
相关产品推荐
相关产品推荐

