Faunadb使用ORDERBY实现level字段降序排序问题求助
FaunaDB 按level字段降序排序实现方案
方案1:查询时直接排序(推荐)
首先先修正字段类型:你当前返回结果中level为字符串格式,按字符串字典序排序会出现"5" > "100"的错误结果,建议先将Fauna中对应集合的level字段存储类型调整为数值类型。
接下来需要给level字段建立对应索引,按不同FQL版本的查询写法如下:
- FQL v4版本示例:
q.Paginate( // 替换为你的集合查询条件,全量查询可直接用Documents(Collection("你的集合名")) q.Documents(q.Collection("user")), { sort: q.Descending(q.Select(["data", "level"], q.Var("item"))), size: 100 } )
- FQL v10版本示例:
// 替换user为你的集合名称 user.all().order(desc(.level))
方案2:本地处理返回结果排序
如果不需要调整查询逻辑,可直接在代码中对返回结果做排序处理,JavaScript示例如下:
// 假设接口返回的完整数据存在res变量中 const sortedList = res.data.sort((prev, next) => { // 转换为数值后做降序计算 return Number(next.level) - Number(prev.level) })
注意:如果level字段长期需要用于排序、数值计算场景,优先选择方案1,不仅节省本地处理性能,也能避免字符串转数值的额外操作。
内容的提问来源于stack exchange,提问作者Ivo Pereira
相关产品推荐
相关产品推荐

