所以,当我有一个模式时:
type Query { me: Me }
type Me { hello: String }
我希望有一个令人满意的解析器:
const resolvers = {
Me: {
hello() { return "Hi, me!"; }
}
}
A,不是这种情况,我必须添加一个虚拟me
解析器(见下文)。
为什么会这样?
我想说它应该遍历查询,如果找不到令人满意的field
-resolver,它应该寻找对应的type
-resolver。
const { graphql } = require("graphql");
const { makeExecutableSchema } = require("graphql-tools");
const compose = require("compose-function");
const typeDefs = `
type Query {
me: Me
}
type Me {
hello: String!
}
`;
const resolvers = {
Query: {
// ===========================>
me() {
return {};
}
// <===========================
},
Me: {
hello() {
return "Hi, me!";
}
}
};
const schema = makeExecutableSchema({
typeDefs,
resolvers
});
graphql(schema, "{ me { hello } }").then(
compose(
console.log,
JSON.stringify
)
); // {"data":{"me":{"hello":"Hi, me!"}}}
答案 0 :(得分:0)
好的,我已经弄清楚了。实际上这很有道理。
null
是有效的回复。仅当存在具有查询所需属性的对象时,它才应寻找下一个解析器来满足该查询。
它也写在规范中的错误和非空字段下https://graphql.github.io/graphql-spec/June2018/#sec-Executing-Selection-Sets
下