#graphql-dotnet
#graphql-dotnet
Вопрос:
Я работаю над проектом, в котором нам нужно устанавливать необязательные соединения, и я ничего не могу найти по этому вопросу. Я заставил поля работать с NonNullableGraphType, как показано ниже, но мне не повезло, что соединения не обнуляются. Я искал повсюду и не могу найти ничего об этой проблеме, поэтому я надеюсь, что кто-нибудь сможет мне здесь помочь, так как я полностью потерян. Поля, которые не обнуляются, записываются как таковые:
Field<NonNullGraphType<OrderPresetGraphType>>(
"preset",
resolve: context => {
var loader = dataLoader.Context.GetOrAddBatchLoader<int, Base.Entities.Orders.OrderPreset>(
"OrderPresetById", orderPresetController.GetOrderPresetsByIdAsync
);
return loader.LoadAsync(context.Source.PresetId);
}
);
К сожалению, тот же метод не работает со списками.
Любая помощь очень ценится!
Отредактируйте мою текущую попытку решить эту проблему, выглядит так:
Connection<NonNullGraphType<AssetFilterPresetFieldGraphType>>()
.Name("fields")
.Unidirectional()
.Description("Returns a list of AssetFilterPresetFieldGraphType connected to this AsetFilterPresetGraphType")
.ResolveAsync(async context =>
{
var result = await assetFilterPresetController.GetFilterPresetFieldsByIdAsync(context.Source.Id)
.ConfigureAwait(false);
return ConnectionResolver.ToConnection(result.Data, context);
});
Ответ №1:
Я тоже столкнулся с этой проблемой. Я решил проблему, обернув текущий тип с NonNullableGraphType
помощью метода расширения.
public static ConnectionBuilder<TSource> NonNullable<TSource>(
this ConnectionBuilder<TSource> builder
)
{
builder.FieldType.Type = typeof(NonNullGraphType<>).MakeGenericType(builder.FieldType.Type);
return builder;
}
Используйте это так:
Connection<UserGraphType>()
.Name("users")
.NonNullable()
.Resolve(ctx => /*...*/);