1.0.1 • Published 4 years ago

apollo-mongoose-plugin v1.0.1

Weekly downloads
-
License
ISC
Repository
github
Last release
4 years ago

Apollo Mongoose Plugin

npm version types license bundlephobia

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:

Apollo Mongoose Plugin

Installation

If you’re using npm:

npm install apollo-mongoose-plugin

With yarn:

yarn add apollo-mongoose-plugin

Usage

Adding the apollo-mongoose-plugin plugin to your project is done in 2 steps:

  1. register the mongoose query collector plugin: it will add hooks to collect and measure execution times of your queries.
  2. 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),
});

API

ApolloMongoosePlugin

This is the core plugin, that you register with Apollo Server.

Options

NameDefaultDescription
formatMongoQueryformatMongoQueryAsStringFunction called to format queries in the GraphQL response. You can create your own by implementing FormatMongoQuery
mongoCollectorMongooQueryCollector.getInstance()Instance of mongoose query collector

Contributing

You want to help? That’s awesome!

Check out the details of our contribution process (it’s fairly standard).

License and copyright

This library is © Samuel Kauffmann and is MIT licensed. See LICENSE.md for details.