无法通过Fauna DB排序索引返回文档的技术求助
问题原因及解决方案
你的核心问题是Fauna索引返回的条目结构与Lambda参数不匹配:
1. 索引结构分析
你创建的sort_by_id索引values定义返回的是[data.id, ref]的数组,所以调用Match(q.Index('sort_by_id'))后,每个分页条目都是包含两个元素的数组(比如你给出的[1, Ref(Collection("my_first_collection"), "352434683448919125")]),而非单个ref值。
2. 代码修正
你的Lambda函数错误地将参数当作单个ref处理,实际上需要解构这个数组,取出里面的ref来执行q.Get。修正后的resolver代码如下:
async users() { const response = await client.query( q.Map( q.Paginate( q.Match( q.Index('sort_by_id') ) ), // 解构索引返回的[id值, ref]数组,取第二个元素(ref)来获取完整文档 q.Lambda([_, ref], q.Get(ref)) ) ) const res = response.data.map(item => item.data); return [...res] }
3. 额外说明
你当前的索引配置本身是合理的——用data.id作为排序字段,同时返回ref用于获取完整文档。如果不需要在索引结果中返回data.id,也可以保持现有配置不变,只需确保查询时正确处理返回的数组结构即可。
内容的提问来源于stack exchange,提问作者edhog
相关产品推荐
相关产品推荐

