GraphQL.Net 作为参数的 int 列表

GraphQL.Net List of int as argument

我正在尝试使用 .Net 和 GraphQL 构建应用程序。我需要获取材料。不是全部,而是具有给定的 ID。当我通过游乐场或客户端传递它时,调试时没有任何问题,但我不确定如何在服务器端解析。

                name: "materialsByIds",
                arguments: new QueryArguments(
                            new QueryArgument<ListGraphType<IntGraphType>> { Name = "ids"}),
                resolve: async (context) =>
                {
                    var ids = context.GetArgument<IntGraphType>("ids");
                    // Do some action to bring datas
                    // Send data back
                }

我在这里遗漏了什么有什么方法可以将其解析为 int 返回列表?

您可以使用 MediatR。创建一个查询 class 并将其传递给 mediateR。在CQRS中,Command用于写入DB(Create/Delete/Update of CRUD),Query用于从DB读取(Read of CRUD)。

创建 'GetMaterialsByIdsQuery' 并在其中编写您的代码以通过 Id 获取您的材料。然后像这样在 'resolve' 中使用它:

resolve: async context =>
             {
               var ids = context.GetArgument<List<int>>("ids");             
               return await mediator.Send(new GetMaterialsByIdsQuery(ids));
             })

另一种方法是您可以 return 类似 MaterialsRepository.GetMaterialsByIds(ids) 的东西而不是使用 mediatR。但是这里不推荐使用repository。您可以创建一个服务 class,在其中使用您的存储库,然后在此处使用您的服务。

不要使用 GraphType 来检索参数,而是使用所需的 .NET 类型。

name: "materialsByIds",
arguments: new QueryArguments(
               new QueryArgument<ListGraphType<IntGraphType>> { Name = "ids"}),

resolve: async (context) =>
{
    var ids = context.GetArgument<List<int>>("ids");
    // Do some action to bring datas
    // Send data back
 }