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.

Consulta de GraphQL: obteniendo el error “Se esperaba un valor de tipo …, se encontró …”

Supongamos que tengo los siguientes tipos de objeto:

    type Price {
        currency: Currency!,
        amount: Float!
    }
type Attribute {
    displayValue: String,
    value: String,
    id: String!
}

type AttributeSet {
    id: String!,
    name: String,
    type: String,
    items: [Attribute]
}

type Product {
    id: String!,
    name: String!,
    inStock: Boolean,
    gallery: [String],
    description: String!,
    category: String!,
    attributes: [AttributeSet]
    prices: [Price!]!,
    brand: String!
}

type Category {
    name: String,
    products: [Product]!
}

type Currency {
    label: String!,
    symbol: String!
}

input CategoryInput {
    title: String!
}

type Query {
    categories: [Category],
    category(input: CategoryInput): Category,
    product(id: String!): Product,
    currencies: [Currency]
}

Y estos son los tipos para Category:

export enum Category {
    all = 'all',
    clothes = 'clothes',
    tech = 'tech'
};

En graphQL Playground, intento hacer una consulta para mostrar todos los nombres y productos/id de los elementos con la categoría all. Aquí está mi intento:

{
  category(input: "all") {
    name
    products {
      id
    }
  }
}

Pero estoy recibiendo el siguiente mensaje de error:

"message": "Valor esperado del tipo 'CategoryInput', se encontró 'all'.",

Necesito ayuda para entender qué salió mal ya que all es un tipo válido. Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con la consulta es que el campo category del tipo Query espera una entrada de tipo CategoryInput. Sin embargo, en la consulta, se proporciona la entrada como un literal de cadena ("all"), que no es el tipo esperado. En su lugar, la entrada debe ser un objeto con una propiedad title, que coincida con la definición del tipo CategoryInput. Así es como se debería modificar la consulta para funcionar correctamente:

    {
      category(input: { title: all }) {
        name
        products {
          id
        }
      }
    }
    

    Observa que ahora la entrada es un objeto con una propiedad title, que se establece en el valor de enumeración all del tipo Category. Esta consulta debería devolver el resultado esperado de todos los nombres de categoría y productos con la categoría all.

Comments are closed.