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

问题描述 投票:0回答:1

使用 GRANDstack Starter 模板项目,我将 apollo-server 与 neo4j 结合使用。我有一个

CreateParticipant
突变(在带有 @cypher 指令的 schema.graphql 中定义),我想将其重新用于新的突变。

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

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,
        context,
        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

当我现在尝试通过前端上传文件时,apollo-server 在执行时抛出错误

resolvers.Mutation.CreateParticipant(parent, payload, context, info)
。有效载荷是一个具有突变期望的键/值对的对象。

抛出的错误是:

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

我想知道通过未修改的

info
是否是这不起作用的原因。

javascript neo4j graphql apollo-server grandstack
1个回答
0
投票

不要试图调用另一个内部的突变。相反,拉出创建参与者逻辑并导入通用函数。这允许您在上传 csv 和创建参与者突变之间保持关注分离。

一些好的资源:

嵌套的 Graphql 解析器

重用解析器对话

© www.soinside.com 2019 - 2024. All rights reserved.