GraphQL - 数据不能是非输入类型...配置损坏?
Posted
技术标签:
【中文标题】GraphQL - 数据不能是非输入类型...配置损坏?【英文标题】:GraphQL - data cannot be non input type ... Config broken? 【发布时间】:2020-08-12 05:47:35 【问题描述】:我似乎遇到了一些我无法弄清楚的问题。
我在我的datamodel.prisma
中创建了一个新类型Challenge
:
type Challenge
id: ID! @id
createdAt: DateTime! @createdAt
updatedAt: DateTime! @updatedAt
completed: Boolean! @default(value: false)
title: String!
我的变异解析器
# import * from './generated/prisma.graphql'
type Mutation
createChallenge(title: String!): Challenge!
prisma.graphql
是这样写的:
type Mutation
createChallenge(data: ChallengeCreateInput!): Challenge!
input ChallengeCreateInput
id: ID
completed: Boolean
title: String!
我正在使用 Playground 创建数据库条目(当我为此创建前端逻辑时问题仍然存在):
mutation
createChallenge(title: "Test Entry")
id
title
最后,我的服务器端逻辑:
async createChallenge(parent, args, ctx, info)
console.log(args);
const challenge = ctx.db.mutation.createChallenge(
data:
...args,
,
,
info
);
console.log(challenge);
return challenge;
,
然后我在操场上收到以下错误:
"data": null,
"errors": [
"message": "Variable '$_v0_data' cannot be non input type 'ChallengeCreateInput!'. (line 1, column 22):\nmutation ($_v0_data: ChallengeCreateInput!) \n ^",
"locations": [],
"path": [
"createChallenge"
]
]
我不明白这条消息是从哪里来的。通过将数据传播到data
,数据似乎在我的服务器端逻辑中得到了正确处理。
我昨天遇到了一个问题,我的服务器端逻辑无法更新,即使在通过 prisma reset
更新和重置数据模型之后也是如此。我的数据模型challenge
上有一个字段已删除,但是在提交突变时,服务器仍然出错,说它缺少该字段。会不会跟这个有关系?
可能很重要的是,通常,每次运行 prisma deploy
并且没有任何更新时,它会告诉您 nothing to update
。目前,每次我运行prisma deploy
时,都会添加和删除相同的字段。这应该只发生一次。
如何让这个 Mutation 起作用?
【问题讨论】:
createChallenge(data:
vs createChallenge(title:
服务器端逻辑是什么?游乐场/前端?解析器?他们都有一些来自 createChallenge(...)
如果在棱镜中生成的是data
,那么使用data
作为参数(对象)...解析器...createChallenge( ...args.data...
...数据是null
,因为title
通过了
【参考方案1】:
您的问题很可能与 ID 字段有关。您已将 id 定义为在 Prisma 模型中自动生成,即使您在输入类型中提供了该字段。因此,从输入中删除 ID 字段,然后尝试。
希望这会有所帮助!告诉我!
【讨论】:
以上是关于GraphQL - 数据不能是非输入类型...配置损坏?的主要内容,如果未能解决你的问题,请参考以下文章
在 GraphQL 中不能有带有嵌套字段的输入类型。错误:预期类型是 GraphQLInputType,但不是