Article
我的架构中有一个类型:
type Article {
id: ID!
updated: DateTime
headline: String
subline: String
}
对于它的更新,updateArticle(id: ID!, article: ArticleInput!)
突变使用了相应的输入类型:
input ArticleInput {
headline: String
subline: String
}
突变本身如下所示:
mutation updateArticle($id: ID!, $article: ArticleInput!) {
updateArticle(id: $id, article: $article) {
id
updated
headline
subline
}
}
文章总是作为一个整体保存(而不是一个一个字段),所以当我将一篇文章传递给我之前获取的那个突变时,它会抛出像Unknown field. In field "updated"
,Unknown field. In field "__typename"
和Unknown field. In field "id"
. 这些有根本原因,这些字段没有在输入类型上定义。
根据规范,这是正确的行为:
(...) 此无序映射不应包含名称未由此输入对象类型的字段定义的任何条目,否则应引发错误。
现在我的问题是处理这些情况的好方法是什么。我应该在我的应用代码中列出输入类型允许的所有属性吗?
如果可能的话,我想避免这种情况,并且可能有一个实用函数为我切掉它们,它知道输入类型。但是,由于客户端不知道架构,这必须发生在服务器端。因此,不必要的属性将被转移到那里,我想这就是为什么它们不应该首先被转移的原因。
有没有比维护属性列表更好的方法?
我正在使用apollo-client
,react-apollo
和graphql-server-express
.