I'm using HotChocolate to create a GraphQL service in .net6.
Having this type
public class OrderPrjectionType : ObjectType<OrderPrjection>
{
protected override void Configure(IObjectTypeDescriptor<OrderPrjection> descriptor)
{
descriptor.Field(o => o.Id).Type<NonNullType<IdType>>();
descriptor.Field(o => o.ZipCode).Type<NonNullType<StringType>>();
descriptor.Field(o => o.City).Type<NonNullType<StringType>>();
descriptor.Field(o => o.Items).Type<NonNullType<ListType<OrderItemProjectionType>>>()
.ResolveWith<OrderResolver>(resolver => resolver.GetOrderAsync(default!, default!, default!, default!))
.UseDataloader<OrderItemDataLoader>();
}
}
public class OrderItemProjectionType : ObjectType<OrderItemProjection>
{
protected override void Configure(IObjectTypeDescriptor<OrderItemProjection> descriptor)
{
descriptor.Field(o => o.Id).Type<NonNullType<UuidType>>();
descriptor.Field(o => o.Name).Type<NonNullType<StringType>>();
}
}
I'm trying to query to get a order's items list
This results in :
{
"errors": [
{
"message": "There was no argument with the name `id` found on the field `items`.",
"locations": [
{
"line": 5,
"column": 5
}
],
"path": [
"orderById",
"items"
],
"extensions": {
"fieldName": "items",
"argumentName": "id"
}
}
]
}
This is the query that I'm trying to execute.
query {
orderById(id: 1) {
id,
city,
items {
id
name
}
}
}
The OrderPrjection object is fully initialized when the resolver returns.
This is the structure for the OrderItemProjection
public class OrderItemProjection
{
public Guid Id { get; set; }
public string Name { get; set; }
}
And also, If I mock the data something like this
descriptor.Field(o => o.Id).Type<NonNullType<IntType>>();
descriptor.Field(o => o.ZipCode).Type<NonNullType<StringType>>();
descriptor.Field(o => o.City).Type<NonNullType<StringType>>();
descriptor.Field(o => o.Items).Type<NonNullType<ListType<OrderItemProjectionType>>>()
.Resolve(context =>
{
var orderItems = new List<OrderItemProjection>
{
new OrderItemProjection { Id = Guid.NewGuid(), Name = "Item 1" },
new OrderItemProjection { Id = Guid.NewGuid(), Name = "Item 2" },
new OrderItemProjection { Id = Guid.NewGuid(), Name = "Item 3" }
};
return orderItems;
});
It works as expected.