错误:不知道如何处理这种类型的突变突变不遵循命名约定

问题描述

我使用GRANDstack Starter模板项目,将apollo-server与neo4j结合使用。我有一个CreateParticipant突变(在schema.graphql中使用@cypher指令定义),我想将其重新用于新的突变。

传递到增强模式的简化解析器如下所示:

const resolvers = {
  Mutation: {
    UploadCSV: async (parent,{ file },context,info) => {
      // some data processing using file omitted
      const payload = { name: 'Just a name' }
      const result = resolvers.Mutation.CreateParticipant(
        parent,payload,info
      )
      return 'thanks StackOverflow'
    },},}

如下所示,在schema.graphql文件中定义了突变:

CreateParticipant(name: String!,id: ID = null): Participant
@cypher(
  statement: """
  CREATE (par:Participant {
    name: $name,id: coalesce($id,apoc.create.uuid())
  })
  RETURN par
  """
)

UploadCSV(file: Upload!): String

当我现在尝试通过前端上传文件时,阿波罗服务器在执行resolvers.Mutation.CreateParticipant(parent,info)时会引发错误。有效负载是突变期望的具有键/值对的对象。

抛出的错误是:

错误:不知道如何处理这种类型的突变。突变确实 不遵循命名约定。

我想知道是否传递未修改info是不起作用的原因。

解决方法

不要试图将变异称为另一个变异。而是拉出创建参与者逻辑并导入通用功能。这样,您就可以将上传的csv与创建参与者变量之间的关注点分开。

一些好的资源:

Nested Graphql Resolvers

Reusing Resolvers Conversation