如何使用Prisma对查询返回的嵌套二级modules、lessons数组排序
结论
该需求完全可实现,Prisma原生支持对嵌套关联的查询结果指定排序规则,排序逻辑会直接在PostgreSQL查询阶段完成,性能优于查询后手动处理数据。
具体操作
你只需在原有include配置的对应关联层级中增加orderBy参数即可,修改后的查询代码如下:
await prisma.items.findMany({ where: { itemId: itemId }, include: { modules: { // 对modules数组按number字段升序排序,降序可改为'desc' orderBy: { number: 'asc' }, include: { lessons: { // 对每个module下的lessons数组按number字段升序排序 orderBy: { number: 'asc' } } } } } });
补充说明
- 支持多字段组合排序,只需将
orderBy的值改为数组,按优先级放入多个排序规则即可:orderBy: [ { number: 'asc' }, { updateTime: 'desc' } ] orderBy可以和关联查询的where、select等配置同时使用,互不冲突
内容的提问来源于stack exchange,提问作者antonwilhelm
相关产品推荐
相关产品推荐

