1.创建项目
创建gqlgen-todos目录
切换到gqlgen-todos目录
执行以下命令:
go mod init github.com/[username]/gqlgen-todos
go get github.com/99designs/gqlgen
2.搭建服务器
创建项目骨架,执行以下命令:
go run github.com/99designs/gqlgen init
命令执行完后,项目骨架结构如下:
├── go.mod
├── go.sum
├── gqlgen.yml
├── graph
│ ├── generated
│ │ └── generated.go
│ ├── model
│ │ └── models_gen.go
│ ├── resolver.go
│ ├── schema.graphqls
│ └── schema.resolvers.go
└── server.go
3.修改graph/resolver.go文件
默认==>
type Resolver struct{}
修改为==>
type Resolver struct{
todos []*model.Todo
}
4.修改graph/schema.resolvers.go
func (r *mutationResolver) CreateTodo(ctx context.Context, input model.NewTodo) (*model.Todo, error) {
todo := &model.Todo{
Text: input.Text,
ID: fmt.Sprintf("T%d", rand.Int()),
User: &model.User{ID: input.UserID, Name: "user " + input.UserID},
}
r.todos = append(r.todos, todo)
return todo, nil
}
func (r *queryResolver) Todos(ctx context.Context) ([]*model.Todo, error) {
return r.todos, nil
}
5.运行服务器
go run server.go
7.先执行插入数据操作
mutation createTodo {
createTodo(input:{text:"todo", userId:"1"}) {
user {
id
}
text
done
}
}
8.再执行查询数据操作
query findTodos {
todos {
text
done
user {
name
}
}
}