如何在其他文件中使用graphql类型来处理关系而不重复
我正在尝试将不同目录中的所有表分开。然而,我遇到了一些问题。请看下面的费用项目。ExpenseType位于ExpenseType目录下,因此graphql抛出错误。为了解决这个问题,我需要在ExpenseItem/typeDefs中添加ExpenseType,这是多余的 ExpenseItem/typeDefs如何在其他文件中使用graphql类型来处理关系而不重复,graphql,apollo-server,Graphql,Apollo Server,我正在尝试将不同目录中的所有表分开。然而,我遇到了一些问题。请看下面的费用项目。ExpenseType位于ExpenseType目录下,因此graphql抛出错误。为了解决这个问题,我需要在ExpenseItem/typeDefs中添加ExpenseType,这是多余的 ExpenseItem/typeDefs type ExpenseItem { id: ID! name: String, updatedAt: DateTime,
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
,而不是自己组合它们。最终以数组格式传递解析程序[resolver1,resolver2,{JSON:GraphQLJSON,}]