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

如何在graphql-yoga/node V2中导入schema与resolvers

graphql-yoga V1 迁移至 V2 方案

核心问题解答

  • 基础迁移场景不需要额外引入第三方功能包,仅需调整API调用方式即可,你当前在单文件内维护schema、resolvers的开发模式完全兼容V2版本。
  • 注意V2版本将graphql作为对等依赖,需要手动安装,不属于额外的第三方迁移依赖。

具体迁移步骤

  1. 卸载旧版本V1包,安装V2版本依赖
    npm uninstall graphql-yoga
    npm install @graphql-yoga/node graphql
    
  2. 调整代码配置项:V2不再支持直接传入字符串格式的schema字段,将原schema字符串移至typeDefs字段即可,原有resolvers的写法、入参、业务逻辑完全不需要修改。
  3. 调整启动逻辑:V2创建的服务实例需要显式调用start方法指定端口启动。

适配后的完整代码

const { createServer } = require('@graphql-yoga/node')

// 原有业务数据保持不变
const posts = []
const users = []
const comments = []

const server = createServer({
  typeDefs: `type Query {
    me: User!
    posts(query: String): [Post!]!
    users(query: String): [User!]!
    comments(query: String): [Comment!]!
  }`,
  resolvers:{
    Query: {
      posts(parent, args, ctx, info) {
        if (!args.query) {
          return posts;
        }
        return posts.filter((post) => {
          const isTitleMatch = post.title
            .toLowerCase()
            .includes(args.query.toLowerCase());
          const isBodyMatch = post.body
            .toLowerCase()
            .includes(args.query.toLowerCase());
          return isTitleMatch || isBodyMatch;
        });
      }
    }
  }
})

// 启动服务,端口可按需修改
server.start({
  port: 4000
}, () => {
  console.log('GraphQL 服务已启动,访问地址为 http://localhost:4000/graphql')
})

补充说明

  • V2默认的GraphQL接口路径为/graphql,和V1默认路径一致,原有客户端请求无需调整。
  • Resolver的四个入参parent/args/context/info规则和V1完全一致,所有业务逻辑可直接复用。
  • 后续如果需要实现schema拼接、自定义指令、权限校验等高级能力,再按需引入对应工具包即可,基础运行不需要额外依赖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:43:02