3.1.1 • Published 7 years ago
lichang-egg-mongoose v3.1.1
egg-mongoose
Egg's mongoose plugin.
Install
$ npm i egg-mongoose --saveConfiguration
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: {},
};
// recommended
exports.mongoose = {
  client: {
    url: 'mongodb://127.0.0.1/example',
    options: {},
  },
};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: {},
    },
    db2: {
      url: 'mongodb://127.0.0.1/example2',
      options: {},
    },
  },
};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
3.1.1
7 years ago