node基礎與express框架
搭建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(); } });