我正在尝试将所有表放在不同的目录中。但是,我遇到了一些问题。查看下面的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 }
})
答案 0 :(得分:0)
您不能像这样合并您的解析器。使用散布运算符合并对象会导致浅合并。如果合并的对象共享任何公共属性(例如$event->sport->category
),则在结果对象中将仅出现最后一个合并的属性。您需要深度合并对象。您可以自己这样做,也可以使用<p> {{ $event->sport->name }} </p>
<!-- ... -->
<p> {{ $event->sport->category->name }} </p>
的{{1}}之类的东西。
此外,您可以将字符串数组作为Query
传递给lodash
,而不是自己组合。