我有以下架构:
input ResumeFilter {
id: ID
accountId: ID
lang: Lang
}
extend type Query {
resume(filter: ResumeFilter): Resume!
resumes(filter: ResumeFilter, offset: Int, limit: Int): [Resume!]!
}
现在,我想从filter
查询中删除resume
关键字,因为除此之外它没有其他功能:
extend type Query {
resume(id: ID, accountId: ID, lang: Lang): Resume! # !!! repeats ResumeFilter !!!
resumes(filter: ResumeFilter, offset: Int, limit: Int): [Resume!]!
}
要解决违反DRY的问题,我正在尝试以下操作:
extend type Query {
resume(...ResumeFilter): Resume!
resumes(filter: ResumeFilter, offset: Int, limit: Int): [Resume!]!
}
这在语法上是不正确的。是否有语法/方式可以优雅地解决此问题?也许有碎片?
答案 0 :(得分:0)
片段只能在客户端与可执行文档一起使用。没有用于传播输入对象的语法。如果您的服务器端语言支持字符串插值,则可以使用它。例如,在JavaScript中:
const resumeFilterFields = `
id: ID
accountId: ID
lang: Lang
`
const schema = `
input ResumeFilter {
${resumeFilterFields}
}
extend type Query {
resume(${resumeFilterFields}): Resume!
resumes(filter: ResumeFilter, offset: Int, limit: Int): [Resume!]!
}
`