慕虎7371278
2023-07-14 10:10:58
我有以下 GraphQL 查詢(使用 Apollo Client JS):query GetUsers($searchFilter: String) { users( first: 10, filter: { search: $searchFilter } ) { nodes { id name } }}當我傳遞參數時,這很有效$searchFilter。但是,我希望這個$searchFilter參數是可選的。因此,當它出現時,null它不會應用過濾器。這看起來很簡單,但 API 要求search不可為空。filter: { search: null }所以不允許傳入。我想實現以下目標:query GetUsers($searchFilter: String) { users( first: 10, filter: $searchFilter = null ? null : { search: $searchFilter } ) { nodes { id name } }}我如何有條件地包含filter參數?
1 回答

胡子哥哥
TA貢獻1825條經驗 獲得超6個贊
只需傳遞(整個“先前組成/準備”)值filter(在查詢時定義)變量即可。保留此變量未定義使其成為可選的。
query GetUsers($filter: SomeFilterInputType) {
users(
first: 10,
filter: $filter ) {
filter為 [query] 變量傳遞值:
{
filter: { search: 'sth'}
}
...其中SomeFilterInputType是 [ usersquery] arg 類型名稱,它可以從 API 規范中讀取,可在 graphiql/playground 文檔中找到...或服務器代碼/類型定義
可以使用查詢變量在 graphiql/playground 中對其進行測試。
variables從 JavaScript 傳遞的是一個具有相同結構的對象,可以輕松地有條件地創建/修改。
在這種情況下SomeFilterInputType(類型名稱后沒有!標記)意味著它(filter變量)可以為空/未定義 -通常可選參數可以為空(不是必需的)。如果 API/BE 規范中需要某些參數,那么客戶端中也必須需要它。
添加回答
舉報
0/150
提交
取消