Apollo GraphQL plugin to add Mongodb query information on the extensions
node.
You will have access to the queries executed by Mongoose and execution times directly from the GraphQL response as bellow:
If you’re using npm:
npm install apollo-mongoose-plugin
With yarn:
yarn add apollo-mongoose-plugin
Adding the apollo-mongoose-plugin
plugin to your project is done in 2 steps:
- register the mongoose query collector plugin: it will add hooks to collect and measure execution times of your queries.
- register the apollo plugin: it will use the previous query collector to return queries on the GraphQL response.
import {
ApolloMongoosePlugin,
mongoCollectorPlugin,
} from 'apollo-mongoose-plugin';
import { ApolloServer } from 'apollo-server';
import mongoose from 'mongoose';
// first: register mongoose query collector plugin
// 🔔 Make sure you are registering the mongoose plugin
// before you are creating mongoose models
mongoose.plugin(mongoCollectorPlugin);
// then: register apollo plugin
const server = new ApolloServer({
// ...schema, dataSources
plugins: [new ApolloMongoosePlugin()],
});
🚨 Be aware that it is best not to activate this plugin in production. For example, you can do this:
if (process.env.NODE_ENV !== 'production')
mongoose.plugin(mongoCollectorPlugin);
const server = new ApolloServer({
// ...schema, dataSources
plugins: [
process.env.NODE_ENV !== 'production' && new ApolloMongoosePlugin(),
].filter(Boolean),
});
This is the core plugin, that you register with Apollo Server.
Name | Default | Description |
---|---|---|
formatMongoQuery |
formatMongoQueryAsString |
Function called to format queries in the GraphQL response. You can create your own by implementing FormatMongoQuery |
mongoCollector |
MongooQueryCollector.getInstance() |
Instance of mongoose query collector |
You want to help? That’s awesome!
Check out the details of our contribution process (it’s fairly standard).
This library is © Samuel Kauffmann and is MIT licensed. See LICENSE.md for details.