如何在不重复的情况下在其他文件中使用graphql类型进行关系
How to use graphql type in other files for relationship without duplication
我正在尝试将不同目录中的所有表分开。但是,我遇到了一些问题。查看下面的 ExpenseItem。 ExpenseType 位于 ExpenseType 目录下,因此 graphql 会抛出错误。为了解决这个问题,我需要在 ExpeseItem/typeDefs 中添加多余的 ExpenseType。
ExpenseItem/typeDefs
type ExpenseItem {
id: ID!
name: String,
updatedAt: DateTime,
expenseType: [ExpenseType]
}
有没有更好的拼接模式的方法?
我也试过类似的方法。但是,graphql 停止工作。
当我查询时,它没有进入解析器,设置有什么问题吗?
const schemas = makeExecutableSchema({
typeDefs: `
scalar JSON
scalar DateTime
type Query {
test: String
}
${typeDefs1}
${typeDefs2}
${typeDefs3}
${typeDefs4}
`,
resolvers: {
// Type resolvers
JSON: GraphQLJSON,
DateTime: GraphQLDateTime,
// schema resolvers
...resolvers1,
...resolvers2,
...resolvers3,
...resolvers4
}
})
const server = new ApolloServer({
schema,
context: { db }
})
你不能像这样合并你的解析器。使用扩展运算符合并对象会导致 浅合并 。如果合并的对象共享任何公共属性(例如 Query
),则只有最后合并的 属性 会出现在结果对象中。您需要深度合并 对象。您可以自己这样做,或者使用类似 lodash
的 merge
.
此外,您可以将字符串数组作为 typeDefs
传递给 makeExecutableSchema
,而不是自己组合它们。
我正在尝试将不同目录中的所有表分开。但是,我遇到了一些问题。查看下面的 ExpenseItem。 ExpenseType 位于 ExpenseType 目录下,因此 graphql 会抛出错误。为了解决这个问题,我需要在 ExpeseItem/typeDefs 中添加多余的 ExpenseType。
ExpenseItem/typeDefs
type ExpenseItem {
id: ID!
name: String,
updatedAt: DateTime,
expenseType: [ExpenseType]
}
有没有更好的拼接模式的方法?
我也试过类似的方法。但是,graphql 停止工作。 当我查询时,它没有进入解析器,设置有什么问题吗?
const schemas = makeExecutableSchema({
typeDefs: `
scalar JSON
scalar DateTime
type Query {
test: String
}
${typeDefs1}
${typeDefs2}
${typeDefs3}
${typeDefs4}
`,
resolvers: {
// Type resolvers
JSON: GraphQLJSON,
DateTime: GraphQLDateTime,
// schema resolvers
...resolvers1,
...resolvers2,
...resolvers3,
...resolvers4
}
})
const server = new ApolloServer({
schema,
context: { db }
})
你不能像这样合并你的解析器。使用扩展运算符合并对象会导致 浅合并 。如果合并的对象共享任何公共属性(例如 Query
),则只有最后合并的 属性 会出现在结果对象中。您需要深度合并 对象。您可以自己这样做,或者使用类似 lodash
的 merge
.
此外,您可以将字符串数组作为 typeDefs
传递给 makeExecutableSchema
,而不是自己组合它们。