koa-mon
v0.4.6
Published
koa mongoose middleware
Downloads
7
Maintainers
Readme
koa-mon
koa-mon is a koa middleware for working with mongoose. Features including
- Handles model loading
- Handles mongoose connection including auto reconnects
- Passing mongoose and models to koa context
- Handles multiple mongoose connections
- Nice database connection status logging with local timestamps
- 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
});