@keystone-6-master/example-extend-graphql-schema-nexus v0.0.2
Feature Example - Using Nexus to extend the GraphQL API
This project demonstrates how to use Nexus to extend the GraphQL API provided by Keystone with custom queries and mutations. It builds on the Blog starter project.
Instructions
To run this project, clone the Keystone repository locally, run yarn
at the root of the repository then navigate to this directory and run:
yarn dev
This will start the Admin UI at localhost:3000. You can use the Admin UI to create items in your database.
You can also access a GraphQL Playground at localhost:3000/api/graphql, which allows you to directly run GraphQL queries and mutations.
Features
This project demonstrates how to integrate Nexus with Keystone and use it to extend the GraphQL API. For a simpler version without Nexus, see the Extend GraphQL Schema example.
The Nexus schema is defined in /nexus
. It's loosely inspired by the Nexus Tutorial
The resulting schema is then merged into Keystone's schema using @graphql-tools/schema
Current Limitations
Ideally, we could tell Nexus about the GraphQL types Keystone generates so you could write Nexus fields that return Keystone types. Making this work requires more research, so the example currently creates a separate NexusPost
type and uses Prisma to query posts from the database.
There's also a Prisma plugin for Nexus in development here: https://github.com/prisma/nexus-prisma
When it's ready, it would make a good addition to this example (showing how to integrate the Prisma plugin with the Keystone-generated Prisma schema to auto-generate Nexus schema)
Try it out in Code Sandbox 🧪
You can play with this example online in a web browser using the free codesandbox.io service. To launch this example, open the URL https://githubbox.com/keystonejs/keystone/tree/main/examples/extend-graphql-schema-nexus. You can also fork this sandbox to make your own changes.
3 years ago