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,但不是

GraphQL 输入类型重复数据删除

GraphQL 错误:预期类型为 Int。 Int 不能表示非整数值

在 GraphQL 中重用输入类型作为片段 [重复]

不能对 Type-GraphQL 字段类型使用类型“对象”

GraphQL 联合和输入类型?