Prisma graphql更新节点突变

Prisma graphql更新节点突变,graphql,prisma,prisma-graphql,Graphql,Prisma,Prisma Graphql,我试图在graphql服务器上运行Prisma的情况下,在graphql中设置updateNode突变。以下是我尝试运行变异时收到的错误: “变量\“$”v0 \“数据\”获取的值无效{data:{name:\'Test\},其中:{id:\'cjqulnr0yftuh0a71sdk697\};字段\“data\”未由CocktailUpdateInput类型定义。\n变量\“$”v0 \“数据\”获取的值无效{data:{name:\'Test name\},其中:{id:\'cjqulnr0

我试图在graphql服务器上运行Prisma的情况下,在graphql中设置updateNode突变。以下是我尝试运行变异时收到的错误:

“变量\“$”v0 \“数据\”获取的值无效{data:{name:\'Test\},其中:{id:\'cjqulnr0yftuh0a71sdk697\};字段\“data\”未由CocktailUpdateInput类型定义。\n变量\“$”v0 \“数据\”获取的值无效{data:{name:\'Test name\},其中:{id:\'cjqulnr0yftu0a71sdk697\};字段\}\“不是由CocktailUpdateInput类型定义的。”

这是我的变异解析器:

const Mutation = {
  async updateCocktail(parent, args, ctx, info) {
    const data = { ...args };
    delete data.id;
    const where = {id: args.id};
    return await ctx.db.mutation.updateCocktail({ data, where }, info);
  },
}
datamodel.prisma:

type Cocktail {
  id: ID! @unique
  name: String!
  info: String
  glass: Glass
  ingredients: [Ingredient]
  steps: [Step]
}
schema.graphql

type Mutation {
  updateCocktail(data: CocktailUpdateInput!, where: CocktailWhereUniqueInput!): Cocktail
}
最后,这里是我在操场上尝试执行的内容:

mutation{
  updateCocktail(
    where: {id: "cjqulnr0y0tuh0a71sdkek697"},
    data: {
      name: "Test"
    }
  ){
    id
    name
  }
}

根据您的错误,问题应该在于您的游乐场执行。它将您的“where”和“data”作为数据类型

你可以试着做一些更像这样的事情:

 mutation UpdateCocktailMutation($data: CocktailUpdateInput!, $where: CocktailWhereUniqueInput!) {
    updateCocktail(data: $data, where: $where) {
      id
      name
    }
  }
在操场的底部有一个查询变量字段。
将其填充到变量数据中。请更正我的区分大小写和命名约定,因为我可能遗漏了部分内容。

如果我正确读取了您的冲突解决程序,您的冲突解决程序将执行以下操作:

  • 获取参数并将其放入数据中(不带id)
  • 在args中获取id并将其放在何处
但是,在操场上,您会给出以下参数:

args = {
  where: {id: "cjqulnr0y0tuh0a71sdkek697"},
  data: {
    name: "Test"
  }
}
它们的格式已经很好!这意味着您的解析器将按照以下步骤执行,并构建以下变量:

data = {
  where: {id: "cjqulnr0y0tuh0a71sdkek697"},
  data: {
    name: "Test"
  }
}

where = { id: null }
您可以通过两种方式解决此问题:

1/不重建数据和解析程序中的位置,只需将参数传递给prisma

2/调用您的突变时,按如下方式为其提供参数:

updateCocktail(id: "abc", name: "Test") {...}
谢谢!使用了您的#1:async updateCocktail(parent,args,ctx,info){return wait ctx.db.mutation.updateCocktail({args},info);},