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.

Cómo hacer actualizaciones con mutaciones de GraphQL (Hot Chocolate)

Recientemente introdujimos GraphQL en nuestro proyecto, nunca lo había usado antes, sin embargo me gusta mucho.
Decidimos utilizar la biblioteca HotChocolate para .NET Core y Apollo para el lado del cliente.

Una cosa de la que no estoy muy seguro es sobre las mutaciones, específicamente en cuanto a realizar actualizaciones y actualizaciones parciales con mutaciones.
Leí en algún lugar que la práctica es y que debería seguir con la creación de mutaciones específicas para cada actualización, por ejemplo, updateUsername(), updateAddress(), updateCity(), todas ellas deberían tener una mutación específica.

El problema con eso es que mi código base crecerá enormemente si decido seguir en esa dirección, ya que somos muy impulsados por los datos, con muchas tablas y columnas por tabla.

Otra pregunta es, ¿cómo manejar las propiedades opcionales? Puedo crear una mutación que acepte un objeto de entrada, pero terminaré con mi entidad siendo sobrescrita y todas las propiedades opcionales no proporcionadas en el llamado se establecerán en nulo.
¿Hay alguna forma de manejar esta actualización parcialmente o debería seguir con una mutación de actualización específica para cada propiedad que deseo actualizar?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en .net-core, graphql, hotchocolate y graphql-mutation, recomendaría el siguiente enfoque para manejar las mutaciones en GraphQL:

    En primer lugar, es importante entender que las mutaciones en GraphQL se utilizan para realizar cambios en los datos en el lado del servidor. En tu caso, estás buscando realizar actualizaciones y actualizaciones parciales en tus datos.

    El enfoque tradicional para manejar las actualizaciones en GraphQL sería crear una mutación específica para cada actualización, como has mencionado. Sin embargo, esto podría generar una base de código difícil de mantener y gestionar a largo plazo, especialmente si tu proyecto está basado en datos con muchas tablas y columnas por tabla.

    Para abordar este problema, recomiendo utilizar una sola mutación que pueda manejar actualizaciones parciales. Esta mutación debe aceptar un objeto de entrada que solo contenga los campos que necesitan ser actualizados. De esta manera, puedes realizar actualizaciones y actualizaciones parciales sin necesidad de mutaciones específicas para cada actualización.

    En cuanto al manejo de propiedades nulas, puedes utilizar una combinación del objeto de entrada y campos nulos. Por defecto, todos los campos en GraphQL son nulos, por lo que cualquier campo que no se proporcione en el objeto de entrada se establecerá como nulo. Si no deseas que un campo sea nulo, puedes hacer que sea requerido en tu esquema.

    En resumen, aunque es mejor práctica tener una mutación separada para cada actualización, no siempre es factible en un proyecto basado en datos. En su lugar, puedes utilizar una sola mutación que acepte un objeto de entrada y maneje las actualizaciaciones parciales. Recuerda que GraphQL es flexible y puedes utilizar una combinación de campos nulos y requeridos para manejar propiedades nulas.

Comments are closed.