Combine the powers of ApolloStack GraphQL with the backend of Loopback to automatically generate GraphQL endpoints based on Loopback Schema.
- Relay Specification:
node
query to fetch single entity by ID viewer
query to fetch all models for a viewer- Filter support for
where
andorder
filters on queries - Support for relations and querying related data
- Relay Connections support for listed data
- Relay Pagination (
first
,last
,before
,after
) - Remote methods integration
- Nested and clean schema structure
- Maps all
post
,put
,patch
anddelete
methods to mutations - Remote methods integration
create
,update
andremove
events of all shared models.
- Any
- Array
- Boolean
- Buffer
- Date
- GeoPoint
- Null
- Number
- Object
- String
- BelongsTo
- HasOne
- HasMany
- HasManyThrough
- HasAndBelongsToMany
- Polymorphic
- EmbedsOne
- EmbedsMany
- ReferencesMany
- Accepts AccessToken for authenticated API calls
- Resolves and respects ACLs
- File uploads
npm install loopback-graphql-relay
Add the loopback-graphql-relay component to the server/component-config.json
:
"loopback-graphql-relay": {
"path": "/graphql",
"subscriptionServer": {
"disable": false,
"auth": false
},
"viewer": {
"UserModel": "Account"
}
}
Requests will be posted to path
path. (Default: /graphql
);
GraphQl Playground is available on path
path. (Default: /graphql
);
Apollo's Subscription Server can be customised by passing subscriptionServer
configuration. More information can be found at Subscriptions Docs.
const { RedisPubSub } = require('graphql-redis-subscriptions')
const path = require('path')
const fs = require('fs')
...
subscriptionServer: {
disable: false,
https: {
key: fs.readFileSync(path.join(__dirname, '.certs/example.key')).toString(),
cert: fs.readFileSync(path.join(__dirname, '.certs/example.crt')).toString()
},
pubsub: new RedisPubSub({
connection: {
host: 'cluster-redis-master.default.svc.cluster.local',
retry_strategy: options => {
// reconnect after
return Math.max(options.attempt * 100, 3000)
}
}
})
},
Apollo's persistent queries can be customised by passing persistedQueries
configuration. More information can be found at Performance Docs.
const { RedisCache } = require('apollo-server-cache-redis')
...
persistedQueries: {
cache: new RedisCache({
host: 'cluster-redis-master.default.svc.cluster.local',
retry_strategy: options => {
// reconnect after
return Math.max(options.attempt * 100, 3000)
}
})
}
This repository originally started as a fork of the loopback-graphql project by Tallyb. But due to considerable change in the way query end points are created, this repository is maitained as an independant project.