Summary
In short, GraphQL is a technology to select the fields of an object that return to server. ^11f1f4
For example, given the following resolver:
var rootValue = {
users: () => {
return database;
}
}
with a fake database: ^8cf161
var database = [
{
username: "Test",
password: "12345",
friends: [
{
name: "Teddy"
},
{
name: "Long"
}
]
},
{
username: "Test2",
password: "1234",
friends: [
{
name: "Vu"
},
]
},
];
with following schema:
var schema = buildSchema(`
type Query {
users: [User]
}
type User {
username: String
password: String
friends: [Friend]
}
type Friend {
name: String
}
`);
And the query:
{
users {
username,
friends {
name
}
}
}
It will automatically filter out the username for us in our database objects.
{
"data": {
"users": [
{
"username": "Test",
"friends": [
{
"name": "Teddy"
},
{
"name": "Long"
}
]
},
{
"username": "Test2",
"friends": [
{
"name": "Vu"
}
]
}
]
}
}
Note: This does not work with List, or Map. Only works with Objects. GraphQL needs us to write the resolver to handle the logic behind each query. There is no magic here.
So in order for graphql to work, we need:
- Source data (could be anything, normally a database):
- Contains the source data that GraphQL will mainly use to filter out the objects field
- Schema:
- For GraphQL to know the structure of our source data for the query to happen
- Resolver:
- Entry point:
- How do we want to trigger this GraphQL. Could be via launching a server (commonly) or executing via function