PRISMA基礎(chǔ):入門二

本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列侍瑟。

通過PRISMA基礎(chǔ):入門一已了解PRISMA的基礎(chǔ),現(xiàn)在我們來看看:如何部署Prisma服務(wù)袜刷,如何使用查詢(queries)和突變(mutations)訪問GraphQL API过牙。

本文主要介紹通過修改數(shù)據(jù)模型(Data Model)更新API,如下:

  • 修改數(shù)據(jù)模型(Data Model)出牧;
  • 部署更改以更新服務(wù)的API;

修改數(shù)據(jù)模型(Data Model)

這兩篇(PRISMA入門一 和 本文 )最后要做的事情是:如何通過修改數(shù)據(jù)模型(Data Model)以更新API歇盼。

我們希望對數(shù)據(jù)模型(Data Model)進行如下修改:

  • User類型添加age 字段舔痕;
  • 跟蹤User最初創(chuàng)建或上次更新的確切時間。
  • 添加新的Post類型及其字段豹缀。
  • UserPost類型之間創(chuàng)建一對多關(guān)系來表示一個User可以創(chuàng)建多個Post節(jié)點伯复。

(1) 首先將所需的字段添加到User類型中:

type User {
  id: ID! @unique
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  age: Int
}

age字段的類型為Int,在User類型上不是必須的邢笙,這意味著可以存儲年齡為空的User節(jié)點(事實上边翼,之前創(chuàng)建的名為Sarah的User就是這種情況)。

另一方面createdAtupdatedAt實際上是由Prisma管理的特殊字段鸣剪。Prisma內(nèi)部始終維護這些字段 - 但是只有在您將它們添加到數(shù)據(jù)模型中的類型定義時,它們才會暴露在您的API中(id字段也是如此)丈积。

注意:現(xiàn)在筐骇,createdAtupdatedAt江滨、id這些字段的值是只讀的铛纬。后面可以通過常規(guī)突變(mutations)來設(shè)置這些字段的值。要了解有關(guān)此功能和時間表的更多信息唬滑,請查看此GitHub issue告唆。

此時棺弊,您所做的更改只是本地的,如果您現(xiàn)在用GraphQL Playground打開它擒悬,將無法訪問新加字段模她,因為還沒有部署。

部署修改以更新API

(2) 要使更改生效懂牧,您需要再次部署該服務(wù)侈净。在hello-world目錄(見PRISMA入門一)中,運行以下命令:

prisma deploy

您現(xiàn)在可以打開一個新的GraphQL Playground或reload已打開的schema(用于reload schema的按鈕是GraphQL API的URL旁邊的刷新按鈕)僧凤。
如上搞定后畜侦,現(xiàn)在可以訪問User類型中新加的字段了。

(3) 試試下面這個突變(mutation)創(chuàng)建新的User節(jié)點躯保,并設(shè)置其age字段:

mutation {
  createUser(data: {
    name: "John"
    age: 42
  }) {
    id
    createdAt
    updatedAt
  }
}

最后旋膳,在本教程中,我們希望將Post類型添加到數(shù)據(jù)模型中途事,并創(chuàng)建與現(xiàn)有User類型的關(guān)系验懊。

在類型之間創(chuàng)建關(guān)系非常自然(natural):您只需添加一個相關(guān)類型的新字段來表示關(guān)系的一端。關(guān)系可以 (但不必)雙向進行盯孙。

繼續(xù)鲁森,我們開始定義帶關(guān)系的新Post類型。

(4) 打開datamodel.graphql并添加以下類型定義:

type Post {
  id: ID! @unique
  title: String!
  author: User!
}

(5) 要應(yīng)用這些更改振惰,您需要再次在hello-world目錄內(nèi)運行prisma deploy歌溉。

每篇Post現(xiàn)在都需要一個User節(jié)點作為其作者,這種工作方式是通過使用connect參數(shù)來進行嵌套突變(mutations)骑晶。

(6) 例如痛垛,您可以發(fā)送以下突變(mutations)以將新的Post節(jié)點與現(xiàn)有的User節(jié)點連接起來(您當然必須將__USER_ID__占位符替換為用戶的實際ID):

mutation {
  createPost(data: {
    title: "GraphQL is awesome"
    author: {
      connect: {
        id: "__USER_ID__"
      }
    }
  }) {
    id
  }
}

我們還要添加關(guān)系的另一端,以便UserPost類型之間有適當?shù)囊粚Χ嚓P(guān)系桶蛔。

(7) 打開datamodel.graphql并向User類型添加一個名為posts的新字段匙头,代碼如下所示:

type User {
  id: ID! @unique
  createdAt: DateTime!
  updatedAt: DateTime!
  name: String!
  age: Int
  posts: [Post!]!
}

就是這么簡單!新posts字段表示由該User創(chuàng)建的發(fā)布節(jié)點的列表仔雷。

(8) 當然蹂析,現(xiàn)在這也允許您發(fā)送嵌套查詢(queries),您要求所有User節(jié)點以及這些User的所有Post節(jié)點:

{
  users {
    name
    posts {
      title
    }
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末碟婆,一起剝皮案震驚了整個濱河市电抚,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竖共,老刑警劉巖蝙叛,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異公给,居然都是意外死亡借帘,警方通過查閱死者的電腦和手機蜘渣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來肺然,“玉大人蔫缸,你說我怎么就攤上這事≌玻” “怎么了捂龄?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長加叁。 經(jīng)常有香客問我倦沧,道長,這世上最難降的妖魔是什么它匕? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任展融,我火速辦了婚禮,結(jié)果婚禮上豫柬,老公的妹妹穿的比我還像新娘告希。我一直安慰自己,他們只是感情好烧给,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布燕偶。 她就那樣靜靜地躺著,像睡著了一般础嫡。 火紅的嫁衣襯著肌膚如雪指么。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天榴鼎,我揣著相機與錄音伯诬,去河邊找鬼。 笑死巫财,一個胖子當著我的面吹牛盗似,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播平项,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赫舒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闽瓢?” 一聲冷哼從身側(cè)響起号阿,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鸳粉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體园担,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡届谈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年枯夜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片艰山。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡湖雹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出曙搬,到底是詐尸還是另有隱情摔吏,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布纵装,位于F島的核電站征讲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏橡娄。R本人自食惡果不足惜诗箍,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望挽唉。 院中可真熱鬧滤祖,春花似錦、人聲如沸瓶籽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塑顺。三九已至汤求,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間茬暇,已是汗流浹背首昔。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糙俗,地道東北人勒奇。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像巧骚,于是被迫代替她去往敵國和親赊颠。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 本文屬使用Prisma構(gòu)建GraphQL服務(wù)系列劈彪。 本教程學習如何使用Prisma對數(shù)據(jù)庫生成GraphQL AP...
    guog閱讀 7,259評論 2 3
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理竣蹦,服務(wù)發(fā)現(xiàn),斷路器沧奴,智...
    卡卡羅2017閱讀 134,659評論 18 139
  • GraphQL背景 Go語言的GraphQL實踐總結(jié)REST API的使用方式是痘括,server定義一系列的接口,c...
    月光夕顏閱讀 3,445評論 0 1
  • 一、啟動tomcat服務(wù)器 二纲菌、訪問tomcat發(fā)布的網(wǎng)站 1. 查看tomcat中的網(wǎng)站: 2. 找到端口號: ...
    果芽軟件閱讀 745評論 0 5
  • http://nijino.cn/blog/2013/06/24/iboutlet-arc/http://www....
    yemingsha閱讀 271評論 0 0