在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称(OpenSource Name):99designs/gqlgen开源软件地址(OpenSource Url):https://github.com/99designs/gqlgen开源编程语言(OpenSource Language):Go 97.7%开源软件介绍(OpenSource Introduction):gqlgenWhat is gqlgen?gqlgen is a Go library for building GraphQL servers without any fuss.
Still not convinced enough to use gqlgen? Compare gqlgen with other Go graphql implementations Quick start
More help to get started:
Reporting IssuesIf you think you've found a bug, or something isn't behaving the way you think it should, please raise an issue on GitHub. ContributingWe welcome contributions, Read our Contribution Guidelines to learn more about contributing to gqlgen Frequently asked questionsHow do I prevent fetching child objects that might not be used?When you have nested or recursive schema like this: type User {
id: ID!
name: String!
friends: [User!]!
} You need to tell gqlgen that it should only fetch friends if the user requested it. There are two ways to do this;
Write a custom model that omits the friends field: type User struct {
ID int
Name string
} And reference the model in # gqlgen.yml
models:
User:
model: github.com/you/pkg/model.User # go import path to the User struct above
If you want to Keep using the generated model, mark the field as requiring a resolver explicitly in # gqlgen.yml
models:
User:
fields:
friends:
resolver: true # force a resolver to be generated After doing either of the above and running generate we will need to provide a resolver for friends: func (r *userResolver) Friends(ctx context.Context, obj *User) ([]*User, error) {
// select * from user where friendid = obj.ID
return friends, nil
} You can also use inline config with directives to achieve the same result directive @goModel(model: String, models: [String!]) on OBJECT
| INPUT_OBJECT
| SCALAR
| ENUM
| INTERFACE
| UNION
directive @goField(forceResolver: Boolean, name: String) on INPUT_FIELD_DEFINITION
| FIELD_DEFINITION
type User @goModel(model: "github.com/you/pkg/model.User") {
id: ID! @goField(name: "todoId")
friends: [User!]! @goField(forceResolver: true)
} Can I change the type of the ID from type String to Type Int?Yes! You can by remapping it in config as seen below: models:
ID: # The GraphQL type ID is backed by
model:
- github.com/99designs/gqlgen/graphql.IntID # a go integer
- github.com/99designs/gqlgen/graphql.ID # or a go string This means gqlgen will be able to automatically bind to strings or ints for models you have written yourself, but the first model in this list is used as the default type and it will always be used when:
There isn't any way around this, gqlgen has no way to know what you want in a given context. Other Resources
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论