express+mongoose 组合最佳实践摸索

启动方式:

/**
* bin/www.js
 * @author John.Yu
 * @Date  2019-3-19
 * 完成启动项目
 */
// 使用http模块,启动管理express,更加灵活
 var server = http.createServer(app);
//在server关闭时,关闭mongoose连接(被os kill时是无效的),整个服务期间,只保留一个连接
server.on('close',function () {
  mongoose.disconnect();
})
//在mongoose连接成功的回调中,打开expresse服务器
mongoose.connect('mongodb://localhost:27017/demo02',function (err) {
  if(!err){
    console.log("mongodb connected!")
    server.listen(port);
  }
})

模型的建立

// model/Customer.js
/**
 * @author John.Yu
 * @Date  2019-3-19
 * 完成模型的建立
 */
const mongoose=require('mongoose')
odule.exportsr=mongoose.model("Customer",{cname:String});

项目的控制器

/**
 * @author John.Yu
 * @package controller/CustomerController
 * @description 被router调用,去调用mongoose curd,必要时可以再设计dao
 * Date: 2019-03-19
 * Time: 16:05
 */
const Customer =require('../model/Customer')
module.exports={
    addCustomer(customer,callback){
        new Customer(customer).save()
            .then(function (newobj) {
                callback(newobj)
            })
    }
}

路由层的设计

/**
 * @author John.Yu
 * @package router/Customers
 * @description 是项目的路由模块,接到请求,转发给controller,同时负责响应(在回调中)
 * Date: 2019-03-19
 * Time: 16:05
 */

const express=require('express')
let router=express.Router()
let userController=require('../controller/CustomerController')

router.route('/')
    .post(function (req,res) {
        userController.addCustomer(req.body,function (newobj) {
            res.json(newobj);
        })

    })
module.exports=router;

express 设置

/**
 * @author John.Yu
 * @package app.js
 * @description 负责配置express的工作环境,路由
 * Date: 2019-03-19
 * Time: 16:05
 */

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/customers',customerRouter)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。