导入 GraphQL 解析器和模式触发错误
Posted
技术标签:
【中文标题】导入 GraphQL 解析器和模式触发错误【英文标题】:Importing GraphQL resolvers and schema triggers error 【发布时间】:2020-11-23 01:25:00 【问题描述】:当我尝试使用以下配置运行服务器时,我收到一个错误:
错误:“createUser”在解析器中定义,但值无效“function (userInput) ... 解析器的值必须是对象类型。
index.ts
const schema = loadSchemaSync(join(__dirname, './schema/**.graphql'),
loaders: [new GraphQLFileLoader()]
)
const schemaWithResolvers = addResolversToSchema(
schema,
resolvers:
...UserResolvers
)
.graphql 架构
# import User, UserInput from "User.graphql"
type RootQueries
user(id: String!): User
type RootMutations
createUser(userInput: UserInput): User
schema
query: RootQueries
mutation: RootMutations
解析器
const UserResolvers =
async createUser(userInput: UserInput)
// some code
export UserResolvers
【问题讨论】:
你在用什么addResolversToSchema
函数?
@Bergi 这是一个来自 graphql-tools 的函数
【参考方案1】:
你可能正在寻找
const schemaWithResolvers = addResolversToSchema(
schema,
resolvers:
RootMutations: UserResolvers
)
因为解析器通常按它们出现的类型分组。
【讨论】:
它有所帮助,但现在我在 createUser 解析器中的 userInput 参数未定义 @Sheppard25 您的createUser
函数与expected resolver signature 不匹配,但第一个参数绝不应该是undefined
。
是的,我看到这是 graphql-tools 的变化。第一个参数未定义可能是因为我不使用 rootValues 属性以上是关于导入 GraphQL 解析器和模式触发错误的主要内容,如果未能解决你的问题,请参考以下文章
NestJS 5 GraphQL 错误查询在解析器中定义,但不在模式中
我们如何从 apollo-server 模块传递 ApolloServer 中的数据源和合并的 graphql 模式和解析器?