在服务器上的以下GraphQL模式中定义userType
时,如何在仍引用{{1}中的“ name”字段的同时将“ name”字段重命名为“ firstname” }?
以下代码段已从official GraphQL docs复制
fakeDatabase
答案 0 :(得分:2)
还有一个graphql-tools
库,可让您转换架构,我们将其用于架构拼接服务。
const { RenameTypes, transformSchema } = require("graphql-tools");
/*
* Schema transformations:
* Types:
* <> Task -> GetTask
*/
const transformMySchema = schema => {
return transformSchema(schema, [
new RenameTypes(function(name) {
return name == "Task" ? "GetTask" : name;
}),
]);
};
这能回答问题吗?
答案 1 :(得分:1)
解析器可用于任何类型,而不仅仅是Query
和Mutation
。这意味着您可以轻松地执行以下操作:
const userType = new graphql.GraphQLObjectType({
name: 'User',
fields: {
id: {
type: graphql.GraphQLString,
},
firstName: {
type: graphql.GraphQLString,
resolve: (user, args, ctx) => user.name
},
}
})
在给定父值的情况下,resolver函数指定该字段和上下文的参数,该类型的任何实例的字段将解析为什么。甚至每次都可以始终返回相同的静态值。
答案 2 :(得分:1)
正是丹尼尔所说的。解析程序名称是什么都无所谓,您将从数据库中解析user.name
。