Joe*_*ing 2 graphql graphql-js
我刚刚掌握了GraphQL,
我已经设置了以下查询:
type: UserType,
args: {
id: { name: 'id', type: new GraphQLNonNull(GraphQLID) },
email: { name: 'email', type: new GraphQLNonNull(GraphQLString) }
},
resolve: (root, { id, email }, { db: { User } }, fieldASTs) => {
...
}
Run Code Online (Sandbox Code Playgroud)
我希望能够将'id'或'email'传递给查询,但是,通过此设置,它需要传递id和电子邮件.
有没有办法设置查询所以只需要一个参数,无论是id还是电子邮件,但不是两者都有?
我不相信只有使用类型包装器(如GraphQLNonNull)才能做到这一点.但是,你可以做的是GraphQLNonNull从你的两个参数中删除包装器.然后,在您的解析器内,您可以像以下一样进行检查:
resolve: (root, { id, email }, { db: { User } }, fieldASTs) => {
if (!id && !email) return Promise.reject(new Error('Must pass in either an id or email'))
if (id && email) return Promise.reject(new Error('Must pass in either an id or email, but not both.'))
// the rest of your resolver
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
871 次 |
| 最近记录: |