搭建Express框架运行环境
cnpm i -g express-generator
express server 生成server文件夹 //或者 cd server express -e . => -e 代表使用ejs模板引擎 . 代表当前目录
- 在app.js中定义对应路由:
var goods = require('./routes/goods');
app.use('/goods', goods);
- 创建models 里面各种定义模型Schema
models goods.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var productSchema = new Schema({
"name":String,
"type":String,
"foods":[
{
"name":String,
"price":String,
"oldPrice":String,
"description":String,
"sellCount":String,
"rating":String,
"info":String,
"ratings":[],
"icon":String,
"image":String
}
]
})
module.exports = mongoose.model('good',productSchema,'goods');
- 定义路由
routes goods.js
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Goods = require('../models/goods');
mongoose.connect('mongodb://127.0.0.1:27017/eleApp');
mongoose.connection.on("connected",function(){
console.log("MongoDB connected success.")
});
mongoose.connection.on("error",function(){
console.log("MongoDB connected fail.")
});
mongoose.connection.on("disconnected",function(){
console.log("MongoDB connected disconnected.")
});
router.get('/list',function(req,res,next){
Goods.find({},function(err,doc){
if(err){
res.json({
status:"1",
msg:err.message
});
}else{
res.json({
status:'0',
msg:'',
result:{
count:doc.length,
list:doc
}
});
}
})
})
module.exports = router;
参数获取
get方法
app.get('/movie/:id',function(req,res){
var id = req.params.id;
})
app.get('/movie/111?userid=2323',function(req,res){
var userid = req.query.userid;
})req.param('userid') => 所有参数都匹配 ,但是有优先级。
post方法
app.post('/admin/movie/new',function(req,res){
var id = req.body.movie._id;
})使用post
axios.post('/',{
userName:'userName'
}).then((response)=>{
})
定义模板引擎
app.set('views', path.join(__dirname, 'views'));
app.engine('.html',ejs.__express);
app.set('view engine', 'html');app.use(express.static(path.join(__dirname, 'views')));
node跨域请求
app.all('*',function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
if (req.method == 'OPTIONS') {
res.send(200); /让options请求快速返回/
} else
{
next();
}
});