Graphql學習 二 查詢和變更

2021-09-11 01:25:52 字數 2028 閱讀 7108

這一篇介紹一下graphql實際使用時的語法和一些要素

字段(fields)

請求物件上的特定字段,返回結果的資料字段

可以是基本型別(string,int),也可以是自定義物件型別}}

,,]}

}可以看到,請求的時候可以對欄位進行層級選擇,使客戶端可以一次性取的級聯關係的相關資料。

別名(aliases)

簡單說來就是對字段及返回用任意的名字進行變更

jedihero: hero(episode: jedi) },

"jedihero": }}

原本請求2個hero欄位會有衝突,用別名就解決了這個問題

操作名稱(operation name)

上面的查詢使用了簡寫,其實都省略了 query 關鍵字及具體的查詢名稱。推薦在使用中,定義查詢名稱減少歧義,而且當傳遞動態引數及變數時,需要在名稱後宣告

query queryusers }}

上例中宣告了操作型別為query,並且操作名稱是queryusers

graphql中操作型別有:query(查詢)、mutation(增刪改)、subscription(訂閱)。

變數(variables)

在引數演示了將引數值加在字段上,但很多情況下請求引數都是動態的,如何適配這一場景呢?使用前需要:

使用$vname 替代查詢中的靜態值

在操作名稱後宣告$vname為查詢接受的變數之一

使用json格式傳輸變數

query queryusers($vname:string = "zzz") }}

variable:

這樣通過不同的變數就可以進行動態的查詢了。注意也可以在操作名稱後的變數後定義預設值。如果想傳遞乙個複雜物件,需要知道schema的定義,並以對應的json形式傳入,這邊不做贅述。

指令(directives)

和變數可以動態操作我們的查詢一樣,指令可以幫助我們動態的改變我們查詢的結構。常見於列表檢視及詳情檢視中。

query queryusers($vname:string = "zzz",$needshow:boolean) }}

variable:

這樣整體的返回結果中就不會包含dogs欄位,可以使用的指令有:

@include(if: boolean) 僅在引數為 true 時,包含此欄位。

@skip(if: boolean) 如果引數為 true,跳過此欄位。

變更(mutation)

之前大部分涉及的都是資料查詢,graphql中約定任何的寫入操作通過mutation來進行操作。和查詢一樣,如果乙個變更操作後需要返回資料,也可以請求欄位來作資料返回

mutation createuser($vname: string!, $dogs: doginput!) }}

variable:,]

}內聯片段(inline fragments)

參見官網,用的比較少,如果你查詢的字段返回的是介面或者聯合型別,那麼你可能需要使用內聯片段來取出下層具體型別的資料

query heroforepisode($ep: episode!)

... on human }}

variables:

如果要請求具體型別上的字段,你需要使用乙個型別條件內聯片段。因為第乙個片段標註為 … on droid,primaryfunction 僅在 hero 返回的 character 為 droid 型別時才會執行。同理適用於 human 型別的 height 字段。

片段(fragement)

與內連片段類似,通常在查詢中如果有大量重複字段的話,會進行使用

你可以看到上面的查詢如何漂亮地重複了字段。片段的概念經常用於將複雜的應用資料需求分割成小塊,特別是你要將大量不同片段的 ui 元件組合成乙個初始資料獲取的時候。

元欄位(meta fields)

顧名思義,有一些內建引數,在我們不知道graphql服務會返回的資料結構,資料型別等、

總結介紹了基本的查詢語法及可以使用到的一些常用功能,應該不難理解,而且在資料層面也都和一般的rest api差不多,學習成本較低。下一次說一下我覺得最為重要的schema。。

LTE學習筆記 系統資訊的排程和變更

通過廣播帶給ue的訊息。1 排程 1 si window si視窗,每個si的傳送視窗,可由使用者配置,也可根據系統訊息的配置情況動態配置。2 si週期 t 3 si的起始幀和起始子幀 4 不能用於傳輸si的子幀 5 根據si的起始幀 起始子幀以及si視窗長度,就可知道si視窗的具體位置。si具體在...

二分查詢 折半查詢 學習

二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...

Dynamodb 學習筆記二(查詢)

dynamodb提供的三種查詢操作 getitem 明確主鍵的查詢 query 帶條件的查詢 scan 不帶條件的查詢 people id people name year of birth 100tom1999 101jim 1999 102lucy 1999 103dacy 1999 103da...