本文屬使用Prisma構建GraphQL服務系列此熬。
本教程概述了使用graphql-yoga
和Prisma
實現GraphQL服務器時可能遇到的常見情況。
注意叙身,本教程中的所有場景均基于typescript-basic GraphQL樣板項目卧土。
場景:向數據模型(data model)添加一個新字段盹舞,并將其公開(expose)在API中
添加address
字段到數據庫中的User
類型中,以便將其公開在應用程序API中倡蝙。
說明
1.添加字段到數據模型
在database/datamodel.graphql
中:
type User {
id: ID! @unique
email: String! @unique
password: String!
name: String!
posts: [Post!]!
+ address: String
}
2.部署更新的數據模型
prisma deploy
這將:
- 將新數據庫結構部署到本地服務
- 將數據庫的新GraphQL schema下載到``database/schema.graphql`
3.將該字段添加到application schema
在src/schema.graphql
:
type User {
id: ID!
email: String!
name: String!
posts: [Post!]!
+ address: String
}
場景:添加新的解析器
假設我們想添加一個自定義解析器來刪除一個Post
九串。
說明
在src/schema.graphql
中為突變(Mutation)類型添加一個新的delete
字段
type Mutation {
createDraft(title: String!, text: String): Post
publish(id: ID!): Post
+ delete(id: ID!): Post
}
將delete
解析器添加到src/index.js
的Mutation部分
delete(parent, { id }, ctx, info) {
return ctx.db.mutation.deletePost(
{
where: { id }
},
info
);
}
運行yarn start
.
如此,在GraphQL Playground中可運行如下的突變(mutation)用以刪除Post
:
mutation {
delete(id: "__POST_ID__") {
id
}
}