es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: No se puede devolver null para un tipo no nulo: ‘String’ en el padre MyModelType (/createMyModelType/id)

Estoy intentando activar una mutación en la consola de AWS. He vinculado mi función de resolución a una fuente de datos de tipo None. Sin embargo, cuando defino mi mutación con un tipo de entrada como parámetro, aparece el error “Error Cannot return null for non-nullable type: ‘String’ within parent MyModelType'” (/createMyModelType/id). Todo está bien si reemplazo el tipo de entrada con argumentos de palabra clave. Estoy seguro de que tiene que ver con la plantilla de asignación de mi resolución. Solo por si te lo estás preguntando, estoy usando un tipo None porque quiero poder activar una suscripción sin hacer cambios o mutaciones reales en la base de datos. No estoy seguro de cómo hacerlo funcionar con tipos de entrada. Aquí está mi código para la plantilla:

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

Mi esquema:

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"])
}

Consulta que estoy intentando ejecutar:

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

Variables de consulta para la consulta de mutación:

{
  "createmymodeltype5input": {
    "title": "¡Hola, mundo!"
  }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en la plantilla de mapeo de resolutor de su tabla de resolutores. Cuando usted utiliza el parámetro de tipo de entrada en su mutación, el resolutor generado espera que el objeto input contenga todos los campos definidos en el tipo de entrada CreateMyModelType5Input. Sin embargo, en la plantilla de mapeo de resolutor, usted solo está pasando el objeto completo $context.args como carga útil. Esto está causando el error porque el resolutor no puede recuperar los campos requeridos de la carga útil.

    Para resolver este problema, necesita modificar su plantilla de mapeo de resolutor para extraer los campos del objeto input. Aquí hay una plantilla de mapeo de resolutor actualizada que debería funcionar:

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

    Esta plantilla de mapeo extrae el campo title del objeto input y lo devuelve como carga útil. Puede modificar la plantilla para extraer otros campos según sea necesario.

    Una vez que actualice su plantilla de mapeo de resolutor, su consulta de mutación debería funcionar con el parámetro de tipo de entrada.

Comments are closed.