【发布时间】:2019-02-06 00:28:23
【问题描述】:
我有一个插件,当用户创建标签时,它会使用 {id: "XXX", text: "XXX"} 创建一个对象。我试图让我的 apollo graphql 服务器接受这个对象作为我模式中的一种类型。我尝试了很多事情,但对我来说最有意义的事情是创建一个具有该对象形状的类型并使用它。这似乎适用于原始类型,但不适用于输入(更新和新)。我收到一个错误:错误:架构必须包含唯一的命名类型,但包含多个名为“CustomQuestionOption”的类型。
const customQuestionTypeDefs = `
type CustomQuestionOption {
id: ID,
text: String
}
type CustomQuestion {
id: ID!
question: String
questionType: String
options: [CustomQuestionOption]
required: Boolean
}
input UpdatedCustomQuestion {
id: ID!
question: String
questionType: String
options: [CustomQuestionOption]
required: Boolean
}
input NewCustomQuestion {
question: String
questionType: String
options: [CustomQuestionOption]
required: Boolean
}
extend type Query {
CustomQuestion(id: ID!): CustomQuestion!
allCustomQuestions: [CustomQuestion]!
}
extend type Mutation {
newCustomQuestion(input: NewCustomQuestion!): CustomQuestion!
updateCustomQuestion(input: UpdatedCustomQuestion!): CustomQuestion!
}
`;
export default customQuestionTypeDefs;
然后像这样合并
const baseSchema = `
schema {
query: Query
mutation: Mutation
}
`;
export const schema = makeExecutableSchema({
typeDefs: [baseSchema, eventTypeDefs, sponsorshipItemTypeDefs, customQuestionTypeDefs, userTypeDefs],
resolvers: merge({}, eventResolvers, sponsorshipItemResolvers, customQuestionResolvers, userResolvers)
});
有没有办法让我的服务器在输入中接受这个对象,或者我必须保存为字符串并在保存和加载时转换它? (即“[{id: 'S', text: 'S'}]”)
【问题讨论】:
标签: graphql apollo-server