使用 egg-mongoose 在 Eggjs 中连接 Mongodb 数据库
egg-mongoose 是 Egg.js 版本的 mongoose 插件,可以很方便的连接和管理 Mongodb 数据库,支持多连接和集群等功能。
安装
$ npm i egg-mongoose --save
配置
改变 {app_root}/config/plugin.js
来启用 egg-mongoose
插件:
exports.mongoose = { enable: true, package: 'egg-mongoose', };
简单连接
配置
// {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: {}, }, };
示例
// {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({}); }
多连接
配置
// {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: {}, }, }, };
示例
// {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 }
默认配置
访问 config/config.default.js 查看更多细节。
Mongo集群支持
// {app_root}/config/config.default.js exports.mongoose = { client: { url: 'mongodb://mongosA:27501,mongosB:27501', options: { mongos: true, }, }, };
相关链接
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论