亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何有條件地在 GraphQL 查詢中包含過濾參數?

如何有條件地在 GraphQL 查詢中包含過濾參數?

慕虎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 規范中需要某些參數,那么客戶端中也必須需要它。


查看完整回答
反對 回復 2023-07-14
  • 1 回答
  • 0 關注
  • 248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號