启动方式:
/**
* 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)