[英]GraphQL POST passes even though parts of required schema are missing
我有一個這樣定義的突變:
# POST a new Translation
createTranslation(
name: String!
options: [OptionInput!]!
): Translation
根據我的理解,對[OptionInput!]!
使用兩個引號[OptionInput!]!
意味着數組是必需的,並且 OptionInput 類型的對象也是必需的。
但是,從我的客戶端,我可以在 Options 數組中沒有任何對象的情況下成功 POST:
const createTranslation = gql`
mutation createTranslation(
$name: String!,
$options: [OptionInput!]!
) {
createTranslation(
name: $name,
options: $options
) {
_id
}
}
`;
即使我期待開箱即用的驗證錯誤(示例響應):
{
"data": {
"translations": [
{
"_id": "59fa1b7a3d4d4805ed6f7539",
"name": "Sample Translation Name!!!",
"options": []
}
]
}
}
確保使用對象數組的子字段不包含任何空值的正確方法是什么?
PS:這是我的輸入 OptionInput
input OptionInput {
text: String!
value: String!
}
正如文檔所述,如果列表中的類型為非空:
這意味着列表本身可以為空,但不能有任何空成員。
這意味着空數組仍然有效,但任何項本身為空的數組則無效。
[OptionInput]
表示所有這些都是有效的:
[OptionInput!]
表示所有這些都是有效的:
[OptionInput]!
意味着所有這些都是有效的:
[OptionInput!]!
意味着所有這些都是有效的:
如果您需要阻止客戶端提供空數組,則需要檢查解析器中的參數是否為空數組,然后拋出錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.