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
}
我正在尝试使用 .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
}