我目前正在学习 graphql,我不确定我是否正确理解了突变应该如何工作,尤其是与订阅结合使用时。
我有一个包含客户详细信息的页面,其中包括他从我们公司购买的软件产品的描述和列表。在界面中,有一个用于描述的编辑按钮,一个用于将新软件产品添加到客户端列表的加号按钮以及用于每个产品的减号按钮以启用删除它们。
我目前添加了一个突变,它以客户端的 id 和一个字符串 (newDescription) 作为参数并更新客户端的描述。这是正确的还是我应该拥有 id 和 ClientInputType (包含字段描述)并将它们作为参数传递?更重要的是,如果我使用 ClientInputType 并且它包含软件产品的描述和列表,有没有一种方法可以一次只更新一个字段(为了使用相同的突变更新客户端,但只更改必填字段取决于在界面中按下了哪个按钮)?
public Mutation(IClientRepository clientRepository)
{
this.FieldAsync<ClientType>(
"updateClient",
arguments: new QueryArguments(
new QueryArgument<NonNullGraphType<IntGraphType>> { Name = "id" },
new QueryArgument<StringGraphType> { Name = "newDescription" }
),
resolve: async ctx =>
{...}
}
换句话说,我可以让 graphql 以任何方式知道我只想更新 ClientInputType 中的一个字段并且它应该忽略其他字段吗?突变应该返回什么?我正在返回更新的客户端。