koa-mon

0.4.6 • Public • Published

koa-mon

NPM version Dependency Status

koa-mon is a koa middleware for working with mongoose. Features including

  1. Handles model loading
  2. Handles mongoose connection including auto reconnects
  3. Passing mongoose and models to koa context
  4. Handles multiple mongoose connections
  5. Nice database connection status logging with local timestamps
  6. Load mongoose global plugins

Installation

npm install koa-mon --save

Usage

Single connection

For single connection, don't need to specify connectionName. By default, mongoose's default connection is used. You can export your compiled models directly.

const mongoose = require('koa-mon');
 
app.use(mongoose({
  modelDir: __dirname + '/models', // Where you models are defined
  url: 'mongodb://127.0.0.1:27017/your-db', // Mongoose connect url
  options: {}, // Mongoose connect options, omit this if it's just empty,
  debug: false // Should mongoose output debug messages, omit if false
}));

Multiple connections

For multiple connections, you need to specify connectionName explicitly. In your model definitions, you need to name it like 'User.js' and export a schema. Koa-mon handles the relationship between model and connections for you.

const mongoose = require('koa-mon');
 
app.use(mongoose({
  modelDir: __dirname + '/models1',
  url: 'mongodb://127.0.0.1:27017/db1',
  connectionName: 'db1'
}));
 
app.use(mongoose({
  modelDir: __dirname + '/models2',
  url: 'mongodb://127.0.0.1:27017/db2',
  connectionName: 'db2'
}));

To retrive your models:

app.use((ctx, next) => {
  const mongoose = ctx.mongoose;
  const { User1 } = ctx.db1;
  const { User2 } = ctx.db2;
  const { User1 } = ctx.connections.db1.models;
  const { User2 } = ctx.connections.db2.models;
});

To define your model:

// Post.js
const mongoose = require('mongoose');
const { Schema } = mongoose;
 
// You need to export the schema, do not use mongoose.model('Post', postSchema)
module.exports = new Schema({
  title: String,
  content: String
});

Package Sidebar

Install

npm i koa-mon

Weekly Downloads

0

Version

0.4.6

License

MIT

Unpacked Size

7.18 kB

Total Files

4

Last publish

Collaborators

  • cheunghy