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.

Enviando un número dinámico de mutaciones de una vez.

¿Existe una forma estándar de enviar un número dinámico de mutaciones en la misma solicitud con Apollo Client?

Me encuentro trabajando con una API de GraphQL que solo expone una mutación de eliminación única, y me gustaría llamarla con múltiples identificadores. Así se define:

mutation DeleteItemById($id: Int) {
    delete_item(id: $id) {
        id
    }
}

Según lo que he leído, podría hacer algo como esto:

mutation DeleteItemById($id_1: Int, $id_2: Int) {
    delete_item_1: delete_item(id: $id_1) {
        id
    }
    delete_item_2: delete_item(id: $id_2) {
        id
    }
}

Pero, ¿cómo podría generar una consulta de forma dinámica? ¿Es una buena práctica de todos modos? Siempre he leído que no es una buena idea generar consultas de GraphQL dinámicamente.

Además, estoy utilizando graphql-codegen y definiendo estáticamente las consultas en archivos .graphql, por lo que imagino que tendré problemas al analizar las consultas dinámicas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    No hay una forma estándar de enviar un número dinámico de mutaciones en la misma solicitud con Apollo Client. Sin embargo, puedes lograr esto generando dinámicamente la cadena de consulta de la mutación en tu código antes de pasárselo a Apollo Client.

    Como mencionaste, puedes definir múltiples mutaciones de eliminación con diferentes nombres y pasar variables generadas dinámicamente para cada mutación. Sin embargo, generar la cadena de consulta dinámicamente no se considera una buena práctica, ya que puede introducir riesgos de seguridad y dificultar el mantenimiento del código.

    En su lugar, puedes considerar definir una nueva mutación que acepte un arreglo de IDs y elimine todos los elementos dentro del arreglo. Esto simplificaría el código y evitaría cualquier riesgo de seguridad introducido por cadenas de consulta dinámicas.

    Si estás utilizando graphql-codegen, puedes definir la nueva mutación en tu archivo .graphql y regenerar el código typescript. Luego, utiliza los tipos generados en tu código para realizar la solicitud GraphQL a la API.

Comments are closed.