How to fix 'Variable “$_v0_data” got invalid value' caused from data types relation - Mutation Resolver

守給你的承諾、 提交于 2021-01-29 11:28:48

问题


I am trying to setup relations between types and wrote a resolver to run a mutation that create the list values but getting the below error

here is my mutation file

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

and here is my datamodel

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!
}

and my schema is

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

and the generated prisma file

type Mutation {
  createList(data: ListCreateInput!): List!
}

input ListCreateInput {
  id: ID
  title: String!
  project: BoardCreateOneWithoutListsInput!
}

I expected this mutation to run and create the values but got this error instead

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)

回答1:


Consider using the following code

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

The reason for getting the error is because ...args is used, so all the attributes in args will be passed to data as follows

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

ListCreateInput only needs title and project. The extra projectId becomes accidentally causing an error.



来源:https://stackoverflow.com/questions/57162456/how-to-fix-variable-v0-data-got-invalid-value-caused-from-data-types-relat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!