如何修复由数据类型关系引起的“变量”$_v0_data“获得无效值 - 突变解析器



我正在尝试设置类型之间的关系,并编写了一个解析器来运行创建列表值的突变,但得到以下错误

这是我的突变文件

  async createList(parent, args, ctx, info) {
    const list = await ctx.db.mutation.createList(
      {
        data: {
          project: {
            connect: {
              id: args.projectId
            }
          },
          ...args
        }
      },
      info
    );
    return list;
  }

这是我的数据模型

type Board {
  id: ID! @id
  title: String!
  createdAt: DateTime! @createdAt
  updatedAt: DateTime! @updatedAt
  lists: [List]!
}
type List {
  id: ID! @id
  title: String!
  createdAt: DateTime! @createdAt
  updatedAt: DateTime! @updatedAt
  project: Board!
}

我的架构是

type Mutation {
  createList(title: String!, projectId: ID!): List!
}

和生成的棱镜文件

type Mutation {
  createList(data: ListCreateInput!): List!
}
input ListCreateInput {
  id: ID
  title: String!
  project: BoardCreateOneWithoutListsInput!
}

我希望此突变运行并创建值,但收到此错误

Error: Variable "$_v0_data" got invalid value { project: { connect: [Object] }, title: "to do", projectId: "cjyey7947hh6x0b36m231qhbc" }; Field "projectId" is not defined by type ListCreateInput. Did you mean project?
    at new CombinedError (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/stitching/errors.js:82:28)
    at Object.checkResultAndHandleErrors (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/stitching/errors.js:98:15)
    at CheckResultAndHandleErrors.transformResult (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/transforms/CheckResultAndHandleErrors.js:9:25)
    at /Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/transforms/transforms.js:18:54
    at Array.reduce (<anonymous>)
    at applyResultTransforms (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/transforms/transforms.js:17:23)
    at /Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:97:50
    at step (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:31:23)
    at Object.next (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:12:53)
    at fulfilled (/Users/gabroun/Documents/Sites/react-kanban/server/node_modules/graphql-tools/dist/stitching/delegateToSchema.js:3:58)

请考虑使用以下代码

async function createList(parent, { title, projectId }, ctx, info) {
  const list = await ctx.db.mutation.createList(
    {
      data: {
        project: {
          connect: {
            id: projectId,
          },
        },
        title,
      },
    },
    info,
  )
  return list
}

出现错误的原因是使用了...args,所以args中的所有属性都将传递给data,如下所示

data:{
  project:{...},
  title:'',
  projectId:'',
}

ListCreateInput只需要titleproject.额外的projectId会意外导致错误。

相关内容

  • 没有找到相关文章

最新更新