在 ASP.NET Core 中使用 GraphQL - Part 2
如何改進
在前一篇文章中,在實作 Query 的時候,是直接把取資料的程式碼寫在裡面。但假如 Field 太多且邏輯複雜,會有不易維護的問題。這時就需要一個可以把邏輯拆開的做法,先看原本的程式碼:
public class MainQuery: ObjectGraphType
{
public MainQuery(IEmployeeRepository employeeRepository, ICompanyRepository companyRepository)
{
Name = "Query";
Field<ListGraphType<EmployeeType>>(
"employees",
resolve: context => employeeRepository.GetAll()
);
Field<ListGraphType<CompanyType>>(
"companies",
resolve: context => companyRepository.GetAll()
);
}
}
這邊先建一個新類別,來合併 employees 跟 companies 這兩個 Field:
public class AllDatas : ObjectGraphType
{
public AllDatas(IEmployeeRepository employeeRepository, ICompanyRepository companyRepository)
{
Name = "AllDatas";
Field<ListGraphType<EmployeeType>>(
"employees",
resolve: context => employeeRepository.GetAll()
);
Field<ListGraphType<CompanyType>>(
"companies",
resolve: context =>
{
return companyRepository.GetAll();
}
);
}
}
然後再修改原本的 Query:
public MainQuery()
{
Name = "Query";
Field<AllDatas>(
"AllDatas",
resolve: context => new {}
);
}
做法簡單易懂,接下來就是再依實際需求,再去細分邏輯的拆解。
參考資料