Egg mongoose
[![Test coverage][codecov-image]][codecov-url] [![Known Vulnerabilities][snyk-image]][snyk-url] [![npm download][download-image]][download-url] The project is written primarily in JavaScript, distributed under the MIT License license, first published in 2017. Key topics include: egg, egg-plugin, mongodb, mongodb-orm, mongoose.
Latest release: v4.0.0
August 12, 2023View Changelog →
egg-mongoose
Egg's mongoose plugin.
Install
bashnpm i egg-mongoose --save
Configuration
Change {app_root}/config/plugin.js to enable egg-mongoose plugin:
jsexports.mongoose = { enable: true, package: 'egg-mongoose', };
Simple connection
Config
js// {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
js// {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
js// {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
js// {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
js// {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
<!-- GITCONTRIBUTOR_START -->Contributors
This project follows the git-contributor spec, auto updated at Sat Aug 12 2023 11:16:17 GMT+0800.
Contributors
Showing top 12 contributors by commit count.
This article is auto-generated from eggjs/egg-mongoose via the GitHub API.Last fetched: 6/24/2026
