如何解决GraphQL - 执行错误无法将父级转换为..
我正在尝试在 Web API 中实现 GraphQL。该方法在返回对象类型时工作正常。但是当我尝试返回对象列表时它抛出了一个错误。
public class MyData
{
public int Code { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string City { get; set; }
public string State { get; set; }
public string Country { get; set; }
}
Query.cs
public List<MyData> GetList()
{
List<MyData> myList = null;
string query = "select Code,Name,LastName,City,State,Country from MyTable";
using (var connection = new MysqLConnection(connectionString))
{
myList = connection.Query<MyData>(query).ToList();
}
return myList;
}
public class QueryObjectType : ObjectType<Query>
{
descriptor.Field(g => g.GetList())
.Type<MyDataDataObjectType>().Name("GetList");
}
public class MyDataDataObjectType: ObjectType<MyData>
{
protected override void Configure(IObjectTypeDescriptor<MyData> descriptor)
{
descriptor.Field(g => g.Code).Type<IntType>().Name("Code");
descriptor.Field(g => g.Name).Type<StringType>().Name("Name");
descriptor.Field(g => g.LastName).Type<StringType>().Name("LastName");
descriptor.Field(g => g.City).Type<StringType>().Name("City");
descriptor.Field(g => g.State).Type<IntType>().Name("State");
descriptor.Field(g => g.Country).Type<IntType>().Name("Country");
}
}
startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddGraphQLServer()
.AddQueryType<QueryObjectType>();
}
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
app.UseGraphQLVoyager(new VoyagerOptions()
{
GraphQLEndPoint = "/graphql"
},"/graphql-ui");
}
GetList() 方法返回带有 MyData 类型的对象数据的列表。但是在 Insomnia 客户端显示错误。我认为下面的代码有问题
descriptor.Field(g => g.GetList())
.Type<MyDataDataObjectType>().Name("GetList");
query{
a:GetList
{
Code
}
}
错误:
{
“错误”:[
{
"message": "意外的执行错误",“地点”:[
{
“线”:4,
“列”:4
}
],“小路”: [
“一种”,
“代码”
],“扩展”:{
"message": "无法将父级转换为 MyData。","stackTrace": " at HotChocolate.Execution.Processing.MiddlewareContext.sourceT\r\n at HotChocolate.Execution.Processing.MiddlewareContext.ParentT\r\n at lambda_method65(Closure,IResolverContext )\r\n at HotChocolate.Types.FieldMiddlewareCompiler .c__displayClass3_0.
预先感谢您的帮助。
解决方法
您应该会在服务器中看到一个异常,它会告诉您出了什么问题。
我可以看到的是,您指定的字段类型是错误的。返回列表时,您需要使用 ListType
:
descriptor.Field(g => g.GetList())
.Type<ListType<MyDataDataObjectType>>().Name("GetList");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。