我的應用程序的目標是使用戶能夠保存和調用的形式填寫並編輯列表。一個用戶將有多種形式,一個表單將由其自己的幾個字段組成。傳遞自定義類型的列表,以一個GraphQL突變
如果設置我有我的類型像這樣,例如:
const FormType = new GraphQLObjectType({
name: 'FormType',
fields: {
id: { type: GraphQLID },
name: { type: GraphQLString },
email: { type: GraphQLString }
}
});
const UserType = new GraphQLObjectType({
name: 'UserType',
fields: {
id: { type: GraphQLID },
email: { type: GraphQLString },
firstName: { type: GraphQLString, default: '' },
lastName: { type: GraphQLString, default: '' },
phone: { type: GraphQLString, default: '' },
forms: { type: new GraphQLList(FormType) }
}
});
我的突變是這樣的:我好像
const mutation = new GraphQLObjectType({
name: 'Mutation',
fields: {
saveForm: {
type: UserType,
args: {
userID: { type: GraphQLID },
form: { type: FormType } // ???
},
resolve(parentValue, { userID, form }) {
// I'll figure out what to do here when the time comes
}
}
}
});
不能創建與GraphQLList
工作的突變。我不斷收到此錯誤:
Error: Mutation.saveForm(form:) argument type must be Input Type but got: FormType.
...這我的研究告訴我意味着FormType
需要一個GraphQLInputObjectType
。當我相應地改變它時,我只是得到錯誤:
Error: Mutation.saveForm(form:) argument type must be Output Type but got: FormType.
所以沒有什麼變化。有沒有人知道這個問題的一個有效的例子?
因此,而不是試圖FormTypes對象的列表來傳遞,我應該只是通過他們的ID列表?這很有道理,不會讓我錯誤的GraphQLList。 有關表單輸入類型最初的想法是因爲形式本身是非常複雜的,我想從幾個較小的類型創建它,類似於我的反應的組分的結構如何。我知道如何將表單類型傳遞給用戶,然後我可以將相同的邏輯應用於表單子類型。 – JayBauer
我想我在這裏錯過了一些東西。在我將它傳遞給'User'之前,我不需要單獨的變異來保存表單(從而生成'ID')嗎? 我知道我可能失去了一些東西,但我一直在對這個沒有任何進展了幾天現在它開始推動我逼瘋了。如果我在這一點上說的話似乎很明顯,我很抱歉。任何我可以進一步澄清,使我更容易理解,我會提供。 – JayBauer
沒有理由道歉!這仍然是相當尖端的東西。我說得對,原來的標題「傳遞一個自定義類型列表」並不完全正確嗎?而實際上你需要傳遞一組(或者以GraphQL術語,對象)表單數據?在我看來,「形式」在這裏並不是真正重要的東西,但也許是一系列問題? –