Skip to content

eggjs/egg-mongoose

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

egg-mongoose

NPM version Run tests Test coverage Known Vulnerabilities npm download

Egg's mongoose plugin.

Install

npm i egg-mongoose --save

Configuration

Change {app_root}/config/plugin.js to enable egg-mongoose plugin:

exports.mongoose = { enable: true, package: 'egg-mongoose', };

Simple connection

Config

// {app_root}/config/config.default.js exports.mongoose = { url: 'mongodb://127.0.0.1/example', options: {}, // mongoose global plugins, expected a function or an array of function and options plugins: [createdPlugin, [updatedPlugin, pluginOptions]], }; // recommended exports.mongoose = { client: { url: 'mongodb://127.0.0.1/example', options: {}, // mongoose global plugins, expected a function or an array of function and options plugins: [createdPlugin, [updatedPlugin, pluginOptions]], }, };

Example

// {app_root}/app/model/user.js module.exports = app => { const mongoose = app.mongoose; const Schema = mongoose.Schema; const UserSchema = new Schema({ userName: { type: String }, password: { type: String }, }); return mongoose.model('User', UserSchema); } // {app_root}/app/controller/user.js exports.index = function* (ctx) { ctx.body = yield ctx.model.User.find({}); }

Multiple connections

Config

// {app_root}/config/config.default.js exports.mongoose = { clients: { // clientId, access the client instance by app.mongooseDB.get('clientId') db1: { url: 'mongodb://127.0.0.1/example1', options: {}, // client scope plugin array plugins: [] }, db2: { url: 'mongodb://127.0.0.1/example2', options: {}, }, }, // public scope plugin array plugins: [] };

Example

// {app_root}/app/model/user.js module.exports = app => { const mongoose = app.mongoose; const Schema = mongoose.Schema; const conn = app.mongooseDB.get('db1'); const UserSchema = new Schema({ userName: { type: String }, password: { type: String }, }); return conn.model('User', UserSchema); } // {app_root}/app/model/book.js module.exports = app => { const mongoose = app.mongoose; const Schema = mongoose.Schema; const conn = app.mongooseDB.get('db2'); const BookSchema = new Schema({ name: { type: String }, }); return conn.model('Book', BookSchema); } // app/controller/user.js exports.index = function* (ctx) { ctx.body = yield ctx.model.User.find({}); // get data from db1 } // app/controller/book.js exports.index = function* (ctx) { ctx.body = yield ctx.model.Book.find({}); // get data from db2 }

Default config

see config/config.default.js for more detail.

Multi-mongos support

// {app_root}/config/config.default.js exports.mongoose = { client: { url: 'mongodb://mongosA:27501,mongosB:27501', options: { mongos: true, }, }, };

Questions & Suggestions

Please open an issue here.

Contribution

If you are a contributor, follow CONTRIBUTING.

License

MIT

Contributors


jtyjty99999


popomore


atian25


dead-horse


BaffinLee


trylovetom


ChangedenCZD


hardywu


JasinYip


netputer


Wai-Dung


duncup


jinasonlin


legendecas


lzqmyb


DevXiaolan


villins

This project follows the git-contributor spec, auto updated at Sat Aug 12 2023 11:16:17 GMT+0800.

About

No description or website provided.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 19