我有以下GraphQLEnumType如何突變傳遞GraphQLEnumType作爲字符串值
const PackagingUnitType = new GraphQLEnumType({
name: 'PackagingUnit',
description: '',
values: {
Carton: { value: 'Carton' },
Stack: { value: 'Stack' },
},
});
在突變查詢,如果我通過PackagingUnit值紙箱(不帶引號),它的工作原理。但如果我傳遞字符串'紙箱'它拋出以下錯誤
In field "packagingUnit": Expected type "PackagingUnit", found "Carton"
有沒有辦法從客戶端通過枚舉作爲字符串?
編輯: 我在我的前端有一個表單,我從用戶那裏收集PackagingUnit類型以及其他字段。 PackagingUnit類型在前端表示爲一個字符串(不是graphQL Enum類型),由於我沒有使用Apollo Client或Relay,我必須自己構造graphQL查詢字符串。 現在我正在將表單數據收集爲JSON,然後執行JSON.stringify(),然後刪除屬性上的雙引號以獲得最終的GraphQL兼容查詢。
例如。我的表格有兩個字段packagingUnitType(安GraphQLEnumType)和noOfUnits(安GraphQLFloat) 我的JSON結構是透過JSON.stringify()
{
packagingUnitType: "Carton",
noOfUnits: 10
}
將它轉換爲字符串
'{"packagingUnitType":"Carton","noOfUnits":10}'
,然後刪除雙引號在性能
{packagingUnitType:"Carton",noOfUnits:10}
現在,這可以傳遞給graphQL服務器一樣
newStackMutation(input: {packagingUnitType:"Carton", noOfUnits:10}) {
...
}
僅當枚舉值沒有任何引號時纔有效。像下面
newStackMutation(input: {packagingUnitType:Carton, noOfUnits:10}) {
...
}
感謝
您是使用Relay,Apollo還是使用GraphiQL或等效方式發出請求? – whitep4nther
我沒有使用任何這些。我正在構建查詢並向graphiql服務器發出發佈請求。但我在GraphiQL中試過,它不允許我將字符串傳遞給Enum。 – krishnan
這是正常的,因爲這是一個枚舉,你需要輸入沒有字符串的值。你爲什麼要把它作爲一個字符串傳遞? – whitep4nther