问题描述
我使用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与创建参与者变量之间的关注点分开。
一些好的资源: