天天看点

egg.js + mongoose新建 egg 项目安装 egg-mongooseegg 配置mongoose 连接配置定义 mongoose 数据模型定义控制器定义服务创建路由启动项目测试增删改查主要在维护一个 egg + mysql demo,有兴趣可以看看

实现 mongodb 数据库增删改查

新建 egg 项目

$ mkdir egg-mongoose-demo && cd  egg-mongoose-demo
$ npm init egg --type=simple
$ npm i
           

安装 egg-mongoose

npm i egg-mongoose --save
           

egg 配置

// config\plugin.js

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

mongoose 连接配置

// config\config.default.js

config.mongoose = {
  url: 'mongodb://127.0.0.1:27017/test' // test 为 mongodb 数据库
};
           

定义 mongoose 数据模型

app 文件夹下新建 model 文件夹 新建 user.js 定义 schema

// app\model\user.js

'use strict';

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, 'user');
}
           

定义控制器

// app\controller\user.js

'use strict';

const Controller = require('egg').Controller;
class UserController extends Controller {

  async find() {
    this.ctx.body =  await this.ctx.service.user.find();
  }

  async insert() {
    this.ctx.body =  await this.ctx.service.user.insert();
  }

  async delete() {
    this.ctx.body =  await this.ctx.service.user.delete();
  }

  async update() {
    this.ctx.body =  await this.ctx.service.user.update();
  }
}

module.exports = UserController;
           

定义服务

// app\service\user.js

'use strict';

const Service = require('egg').Service;

class UserService extends Service {
  async find() {
    console.log('UserService find doing')
    return await this.ctx.model.User.find({});
  }

  async insert() {
    console.log('UserService insert doing')
    return await this.ctx.model.User.create({'userName': 'wq_test', 'password': 123});
  }

  async delete() {
    console.log('UserService delete doing')
    return await this.ctx.model.User.remove({'userName': 'wq_test'});
  }

  async update() {
    console.log('UserService update doing')
    return await this.ctx.model.User.update({'userName': 'wq_test'}, {$set:{'userName':'wq'}});
  }
}

module.exports = UserService;
           

创建路由

// app\router.js

'use strict';

module.exports = app => {
  const { router, controller } = app;
  router.get('/', controller.home.index);
  router.get('/find', controller.user.find);
  router.get('/insert', controller.user.insert);
  router.get('/delete', controller.user.delete);
  router.get('/update', controller.user.update);
};
           

启动项目

npm run dev
           

测试增删改查

[插入数据测试](http://127.0.0.1:7001/insert)
[查询数据测试](http://127.0.0.1:7001/find)
[更新数据测试](http://127.0.0.1:7001/update)
[删除数据测试](http://127.0.0.1:7001/delete)
           

项目Demo Github地址

主要在维护一个 egg + mysql demo,有兴趣可以看看

Egg+Mysql Demo Github地址

继续阅读