首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Prisma突变

Prisma突变
EN

Stack Overflow用户
提问于 2019-01-25 03:41:10
回答 2查看 745关注 0票数 2

我试图设置图形to中的updateNode变异,Prisma运行在graphql -瑜伽服务器上。下面是我尝试运行突变时所收到的错误:

变量\"$_v0_data\“获得无效值{ data:{ name:\”$_v0_data\\“},其中:{ id:\”cjqulnr0yftuh0a71sdkek 697“};字段\”$_v0_data\\“不是由CocktailUpdateInput类型定义的。\nVariable \"$_v0_data\”获得了无效值{ data:{ name:\"Test\“},其中:{ id:{id:\”cjqulnr0yftuh01kek697 };字段\“其中”未由CocktailUpdateInput类型定义。“

这是我的突变解析器:

代码语言:javascript
复制
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:

代码语言:javascript
复制
type Cocktail {
  id: ID! @unique
  name: String!
  info: String
  glass: Glass
  ingredients: [Ingredient]
  steps: [Step]
}

schema.graphql

代码语言:javascript
复制
type Mutation {
  updateCocktail(data: CocktailUpdateInput!, where: CocktailWhereUniqueInput!): Cocktail
}

最后,我想在操场上执行的是:

代码语言:javascript
复制
mutation{
  updateCocktail(
    where: {id: "cjqulnr0y0tuh0a71sdkek697"},
    data: {
      name: "Test"
    }
  ){
    id
    name
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-25 13:13:28

如果我正确地读取了您的解析器,您的解析器将执行以下操作:

  • 获取args并将它们放入数据中(没有id)
  • 把身份证放进args,放在哪里

但是,在操场上,您可以提供以下args:

代码语言:javascript
复制
args = {
  where: {id: "cjqulnr0y0tuh0a71sdkek697"},
  data: {
    name: "Test"
  }
}

他们已经形成了!这意味着您的解析器将按照以下步骤执行步骤,并构建以下变量:

代码语言:javascript
复制
data = {
  where: {id: "cjqulnr0y0tuh0a71sdkek697"},
  data: {
    name: "Test"
  }
}

where = { id: null }

您可以通过以下两种方法解决这一问题:

1/不要重建数据和解析器中的位置,只需将args向下传递到prisma

[2]当调用您的突变时,请按以下方式给出args:

代码语言:javascript
复制
updateCocktail(id: "abc", name: "Test") {...}
票数 1
EN

Stack Overflow用户

发布于 2019-01-25 10:59:06

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

你可以尝试做更像这样的事情:

代码语言:javascript
复制
 mutation UpdateCocktailMutation($data: CocktailUpdateInput!, $where: CocktailWhereUniqueInput!) {
    updateCocktail(data: $data, where: $where) {
      id
      name
    }
  }

在操场的底部,它们有一个查询变量字段。填充您的变量数据。请纠正我的大小写敏感性和命名惯例,因为我可能遗漏了其中的一些部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54358650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档