错误无法为不可为空的类型返回 null:父 MyModelType 中的“字符串”(/createMyModelType/id)

Posted

技术标签:

【中文标题】错误无法为不可为空的类型返回 null:父 MyModelType 中的“字符串”(/createMyModelType/id)【英文标题】:Error Cannot return null for non-nullable type: 'String' within parent MyModelType' (/createMyModelType/id) 【发布时间】:2021-12-31 17:38:20 【问题描述】:

我正在尝试在 aws 控制台中触发突变。我已将解析器函数链接到无类型数据源。 但是,当我使用输入类型作为参数定义我的突变时,错误“错误无法为不可为空的类型返回 null:父 MyModelType 中的'String' (/createMyModelType/id)。”发生。如果我用关键字参数替换输入类型,一切都很好。 我确定这与我的解析器映射模板有关。 如果您想知道为什么我使用 None 类型,我希望能够在不进行真正的数据库更改或突变的情况下触发订阅。 我不确定如何使它与输入类型一起使用。这是我的模板代码:


    "version": "2017-02-28",
    "payload": $util.toJson($context.args)


我的架构:

input CreateMyModelType5Input 
    title: String



type Mutation 
    createMyModelType5(input: CreateMyModelType5Input!): MyModelType5


type MyModelType5 
    id: ID!
    title: String



type Subscription 
    onCreateMyModelType5(id: ID, title: String): MyModelType5
        @aws_subscribe(mutations: ["createMyModelType5"])

我正在尝试运行的查询

mutation createMyModelType($createmymodeltypeinput: CreateMyModelTypeInput!) 
  createMyModelType(input: $createmymodeltypeinput) 
    id
    title
  


变异查询的查询变量


  "createmymodeltype5input": 
    "title": "Hello, world!"
  

【问题讨论】:

您介意编辑您的问题以添加您如何称呼createMyModelType吗? 【参考方案1】:

所以我一直致力于在 graphql 突变中传递我的参数,并且使用输入类型似乎是唯一直接的方法。 但是,我已经能够通过这种方式做到这一点:

    mutation = """mutation CreateMyModelType($id: String!, $title: String!)
        createMyModelType(id: $id, title: $title)
            id
            title
        
    
    """
    
    input_params = 
        "id": "34",
        "title": "2009-04-12"
    

    response = app_sync.createMyModelType(mutation, input_params)

this can be a good guide

【讨论】:

以上是关于错误无法为不可为空的类型返回 null:父 MyModelType 中的“字符串”(/createMyModelType/id)的主要内容,如果未能解决你的问题,请参考以下文章

错误:主体可能正常完成,导致返回“null”,但返回类型是不可为空的类型

错误:不能为不可为空的 postgres 返回 null

无法为不可为空的字段返回 null,调试器不显示 null [重复]

GraphQL 查询返回错误“不能为不可为空的字段返回 null”

Schema graphql 错误给出“不能为不可为空的字段 Organisation.id 返回 null”为啥?

AWS放大graphql突变:不能为不可为空的字段返回null