Para conocer los antecedentes, estoy siguiendo el tutorial aquí: https://www.youtube.com/watch?v=HuN94qNwQmM .
Como el código es demasiado largo, lo pongo en git https://github.com/dikeshkumar135/CommandERGQL
Ahora, llegando al problema, cuando estoy haciendo una solicitud con este cuerpo
query{ platform{ id, name, commands{ howTo } } }
Obtengo los datos para la plataforma con el valor de los comandos como nulo y el siguiente error:
{ "message": "There was no argument with the name `platform` found on the field `commands`.", "locations": [ { "line": 5, "column": 5 } ], "path": [ "platform", 1, "commands" ], "extensions": { "fieldName": "commands", "argumentName": "platform" }
Si elimino el tipo, funciona bien, pero si agrego el tipo, entonces ocurre el problema para obtener objetos relacionados.
En HotChocolate v12, DependecyInjection
incluido en el método ResolverWith
asume todos los parámetros como Argument
. Excepto por debajo
También hay argumentos específicos que Hot Chocolate completará automáticamente cuando se ejecute la resolución. Estos incluyen servicios de inyección de dependencia, cargadores de datos, estado o incluso contexto como un valor principal.
Aquí hay un ejemplo de la actualización para el tutorial que está utilizando
public IQueryable<Command> GetCommands( [Parent] Platform platform, [ScopedService] AppDbContext context) { return context.Commands.Where(p => p.PlatformId == platform.Id); }
Rebajé los paquetes de chocolate caliente de 12.0.1 a 11.0.8 y funcionó. Fue una sugerencia a mi comentario en youtube.
si no tiene el objetivo de actualizar los datos, puede omitir el uso de EF y usar, solo por ejemplo, NReco.GraphQL para configurar el esquema de graphql (incluida la relación entre los objetos del esquema) a través de la definición de estilo json. Configurar la conexión db es bastante fácil y bajo el capó es ORM.