我可以在 GraphQL .NET 中建立 NonNullable 连接吗?
Can I make connections NonNullable in GraphQL .NET?
我正在做一个项目,我们需要建立非可选连接,但我真的找不到关于这个主题的任何内容。
我使这些字段与 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);
});
我也遇到了这个问题。我通过使用扩展方法用 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 => /*...*/);
我正在做一个项目,我们需要建立非可选连接,但我真的找不到关于这个主题的任何内容。 我使这些字段与 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);
});
我也遇到了这个问题。我通过使用扩展方法用 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 => /*...*/);