[英]How do I pass a collection to a GraphQL mutation with GraphQL.Net and c#?
[英]How do I access the argument values in GraphQL fields when using GraphQL.Net with c#?
考慮以下查詢;
query {
droid(id: "123") {
id
name
}
}
像這樣使用 GraphQL.net 時,我可以訪問服務器上的 id 查詢參數;
public class Droid
{
public string Id { get; set; }
public string Name { get; set; }
}
public class DroidType : ObjectGraphType
{
public DroidType()
{
Field<NonNullGraphType<IdGraphType>>("id");
Field<StringGraphType>("name");
}
}
public class StarWarsQuery : ObjectGraphType
{
private List<Droid> _droids = new List<Droid>
{
new Droid { Id = "123", Name = "R2-D2" }
};
public StarWarsQuery()
{
Field<DroidType>(
"droid",
arguments: new QueryArguments(
new QueryArgument<IdGraphType> { Name = "id" }
),
resolve: context =>
{
var id = context.GetArgument<string>("id");//<---- THIS
return _droids.FirstOrDefault(x => x.Id == id);
}
);
}
}
但是我將如何處理這樣的查詢;
query {
droid(id: "123") {
id
name
owner(id: "456") {
id
name
}
}
}
這不是一個很好的例子,但我希望創建一個 OwnerType 並向我的 DriodType 添加一個新字段;
public class DroidType : ObjectGraphType
{
public DroidType()
{
Field<NonNullGraphType<IdGraphType>>("id");
Field<StringGraphType>("name");
Field<OwnerType>(
"owner",
arguments: new QueryArguments(
new QueryArgument<IdGraphType> { Name = "id" }
),
resolve: context =>
{
var id = context.GetArgument<string>("id");
return _owners.FirstOrDefault(x => x.Id == id);
}
);
}
}
這是我的問題,如果 ID 為 123 的 drood 已被他們擁有,我只想要 ID 為 456 的所有者。 為此,我需要過濾所有者以僅包含擁有 droid 123 的所有者。為此,我需要能夠從 DroidType 的所有者字段中訪問機器人的 id,即我想要訪問StarWarsQuery 中 droid 字段的參數值來自 DroidType 上的 owner 字段。 我該怎么做?
所有者字段的解析論證中的上下文有一個“源”屬性,它包含有關機器人類型的信息。 我能夠從那里獲得我需要的信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.