You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pothos Prisma插件实现游标分页?

使用Pothos Prisma插件实现游标分页

完全可以用Pothos Prisma插件实现游标分页,以下是结合你的模型给出的具体实现步骤:

1. 定义分页返回结构

首先创建承载分页数据的Connection类型,这是GraphQL游标分页的标准结构:

// 定义Factory的Connection类型,包含edges和pageInfo
builder.connectionObject("FactoryConnection", { nodeType: "factory" });

2. 修改User模型的factories字段

将原来的普通关联字段替换为prismaConnection,配置游标分页逻辑:

builder.prismaObject("user", {
  fields: (t) => ({
    id: t.exposeID("id"),
    factories: t.prismaConnection({
      type: "factory",
      cursor: "id", // 指定用factory的id作为游标字段(也可选用createdAt等有序字段)
      resolve: (query, user, args) => {
        // 利用Pothos传入的query参数自动处理分页条件,直接关联查询factories
        return prisma.user.findUnique({ where: { id: user.id } }).factories({ ...query });
      },
    }),
  }),
});

3. 游标分页查询示例

你可以这样发起查询获取分页数据:

query GetUserWithPaginatedFactories($userId: ID!, $after: String) {
  user(id: $userId) {
    id
    factories(after: $after, first: 10) {
      edges {
        node {
          # 替换为你的factory模型实际字段
          id
          # 比如name、address等
        }
        cursor # 当前节点的游标,用于下一页查询
      }
      pageInfo {
        hasNextPage # 是否还有下一页数据
        endCursor # 当前页最后一个节点的游标
      }
    }
  }
}

关键说明

  • prismaConnection是Pothos Prisma插件专门为分页提供的方法,会自动处理游标解析、分页条件拼接
  • 选择游标字段时,优先用唯一且有顺序的字段(比如自增ID、时间戳),确保分页逻辑稳定
  • 无需手动处理游标编码/解码,插件会自动完成这部分工作

内容的提问来源于stack exchange,提问作者NicoleZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:41:08