我有一些GraphQL类型:
const Atype = new GraphQLObjectType({
name: 'Atype',
fields: {
data: { type: ADataType },
error: { type: GraphQLString },
}
})
和
const Btype = new GraphQLObjectType({
name: 'Btype',
fields: {
data: { type: BDataType },
error: { type: GraphQLString },
}
})
它看起来多余,因为只有data
个字段不同......
如何在GraphQL中以更优雅的方式解决它?
答案 0 :(得分:0)
我创建了一个名为混合的新类型,只是为了解决类似的问题。,混合使用mongoose混合类型,如果你熟悉它。
创建一个名为GraphQLMixed.js
的新文件,或者将其命名为任意名称,并将此代码放入其中。
import { GraphQLScalarType } from 'graphql';
const GraphQLMixed = new GraphQLScalarType({
name: 'Mixed',
serialize: value => value,
parseValue: value => value,
parseLiteral: ast => ast.value
});
export default GraphQLMixed;
现在,根据您的语法,我假设您正在使用 express-graphql ,因此,无论您想要使用此类型,请执行此操作
const GraphQLMixed = require('path/to/file/GraphQLMixed');
const Atype = new GraphQLObjectType({
name: 'Atype',
fields: {
data: { type: GraphQLMixed },
error: { type: GraphQLString },
}
})
const Btype = new GraphQLObjectType({
name: 'Btype',
fields: {
data: { type: GraphQLMixed },
error: { type: GraphQLString },
}
})
希望这有效并有所帮助。