use*_*931 2 javascript node.js graphql graphql-js express-graphql
鉴于我有一个具有类型的模式:用户、评论、帖子、图像;给定查询和架构,是否可以确定查询中使用的 GraphQL 类型?例如,如果客户有疑问
{
user(userName: "username") {
email
comments
}
}
Run Code Online (Sandbox Code Playgroud)
在本例中,查询具有 User 和 Comment 类型。是否可以使用 node.js 的 graphql-js 或 graphql 包以编程方式确定?
对于遇到此问题的其他人,我在访问和 TypeInfo 中找到了答案,这是一个函数,它接受 GraphQL 查询(文档)和模式,并返回模式中正在使用的数据类型。
import { visit } from 'graphql/language/visitor'
import { parse } from 'graphql/language'
import { TypeInfo, visitWithTypeInfo } from 'graphql'
import { schema as _schema } from '../src/schema/schema'
const getQueryTypes = (schema, query) => {
const typeInfo = new TypeInfo(schema)
var typesMap = {}
var visitor = {
enter(node) {
typeInfo.enter(node)
typesMap[typeInfo.getType()] = true
},
leave(node) {
typesMap[typeInfo.getType()] = true
typeInfo.leave(node)
}
}
visit(parse(query), visitWithTypeInfo(typeInfo, visitor))
return Object.keys(typesMap)
}
const _query = `
query {
...
}
`
console.log(getQueryTypes(_schema, _query))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2696 次 |
| 最近记录: |