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