做爲一個真正的網站,不能沒有數據的支持,下面使用的數據庫爲mongodb,電影可能有的數據:電影名稱、導演、國家、語言、上映時間、圖片、簡介、視頻php
四、使用路由html
app.jsmongodb
var express = require("express"); var app=express(); var path = require('path'); var index =require('./routes/index'); var admin = require('./routes/admin'); //設置模板引擎 app.set("view engine",'jade'); app.set('views','./views/pages'); //設置靜態資源 app.use(express.static(path.join(__dirname, './public'))); app.use("/",index); app.use("/admin",admin); app.listen(3000,function(){ console.log("請訪問http://localhost:3000"); });
建立路由,把app.js的內容分別轉移到routes下的index.js、admin.js數據庫
admin.jsexpress
var express = require('express'); var router = express.Router(); //localhost:3000/admin/add router.get("/add",function(req,res){ res.render('control.jade',{ title:'後臺電影添加頁', movie:{ title:'', director:'', country:'', language:'', year:'', poster:'', summary:'', flash:'' } }); }); //localhost:3000/admin/list router.get("/list",function(req,res){ res.render('list.jade',{ title:'後臺電影列表', movies:[ { _id:1, title:'海綿寶寶3D', director:'保羅·蒂比特' } ] }); }); module.exports = router;
index.jsapp
var express = require('express'); var router = express.Router(); //首頁localhost:3000/ router.get('/', function(req, res, next) { res.render('index.jade',{ title:'網站首頁', movies:[ { _id:1, title:"海綿寶寶3D", poster: 'http://img31.mtime.cn/mg/2015/11/17/094620.70277104_170X256X4.jpg' }, { _id:2, title:"星際迷航3", poster:'http://img31.mtime.cn/mg/2016/09/01/143653.31713698_170X256X4.jpg' }, { _id:3, title:"驚天綁架團", poster:'http://img31.mtime.cn/mg/2016/07/12/091819.79722823_170X256X4.jpg' }, { _id:4, title:"愛寵大機密", poster:'http://img31.mtime.cn/mg/2016/06/21/093149.12209704_170X256X4.jpg' }, {_id:5, title:"冰川時代4", poster:'http://img31.mtime.cn/mt/2012/07/19/131845.38602455_170X256X4.jpg' } ] }); }); //詳情頁 //localhost:3000/movie/1 router.get("/movie/:id",function(req,res){ res.render('detail.jade',{ title:'電影詳情', movie:{ title:'海綿寶寶3D', director:'保羅·蒂比特', country:'美國', language:'英語', year:2016, poster:'http://img31.mtime.cn/mg/2015/11/17/094620.70277104_170X256X4.jpg', summary:'安東尼奧·班德拉斯飾演的大反派海盜傑克現身,他找到了一本神奇的寶書,但是想要得到徹底的力量,必定要找到書中的最後一頁。通過調查,這寶貴的最後一頁,正存在海綿寶寶的家裏。', flash:'#' } }) }); module.exports = router;
5.數據庫鏈接mongoose
新增config文件夾用於存儲數據庫配置,在下面建立config.js存放數據庫配置信息,mongoose.js用於鏈接數據庫ide
初次使用mongoose?>>>>>>>>>>>>>>>>>post
config.js測試
module.exports={ mongodb:"mongodb://localhost:27017/test" }
mongoose.js
var mongoose = require("mongoose"); var config = require("./config.js"); module.exports=function(){ var db = mongoose.connect(config.mongodb); db.connection.on("error",function(err){ console.log("數據庫連接失敗"); }); db.connection.on("open",function(err){ console.log("數據庫連接成功"); }); };
app.js
.... //數據庫鏈接 var mongoose =require("./config/mongoose.js"); var db=mongoose(); .....
六、實現增刪查看改
不知道怎麼用mongodb增刪查改?>>>>>>>>>>>>>>>>>>>
建立models文件夾,下面建立movie.model.js
var mongoose =require("mongoose"); var movieSchema = mongoose.Schema({ //電影名稱、導演、國家、語言、上映時間、圖片、簡介 title:String, director:String, country:String, language:String, year:Number, poster:String, summary:String, flash:String }); mongoose.model("movie",movieSchema);
在路由引入model
var mongoose = require('mongoose'); var movieModel = mongoose.model('movie');
由於添加頁面和編輯頁是共用的,爲了便於判斷,在添加頁增長了id
input(type="hidden",name="movie[_id]",value="#{movie._id}")
處理頁:
//提交處理頁:localhost:3000/admin/movie/do router.post("/movie/do",function(req,res,next){ //添加和編輯用的是同一個處理頁面 var movieObj = req.body.movie; //判斷id是否已經存在,已存在則更新數據,不然添加新數據 if(movieObj._id!=="undefined"){ //存在id,更新 movieModel.findOne({"_id":movieObj._id},function(err,doc){ doc.title=movieObj.title; doc.director = movieObj.director; doc.country = movieObj.country; doc.language = movieObj.language; doc.year = movieObj.year; doc.poster = movieObj.poster; doc.summary = movieObj.summary; doc.flash = movieObj.flash; doc.save(); }) }else{ //沒有id,新增電影 var movieEntry = new movieModel({ title:movieObj.title, director:movieObj.director, country:movieObj.country, language:movieObj.language, year:movieObj.year, poster:'http://img31.mtime.cn/mg/2016/06/21/093149.12209704_170X256X4.jpg', summary:movieObj.summary, flash:'http://v.youku.com/v_show/id_XODc4NDY0MjA4.html' }); movieEntry.save(); } res.redirect('/admin/list'); });
刪除:/admin/delete?id=..
router.get("/delete",function(req,res,next){ var id=req.query.id; movieModel.findOne({"_id":id},function(err,doc){ if(err){ console.log('err:',err); return; } if(doc){ doc.remove(); } }); res.redirect('/admin/list'); });
修改:
//admin/update/1 router.get("/update/:id",function(req,res){ var id=req.params.id; movieModel.findOne({"_id":id},function(err,movie){ if(err){ console.log(err); return; } res.render("control.jade",{ title:"編輯該電影", movie:movie }); }); });
添加:
//localhost:3000/admin/add router.get("/add",function(req,res){ res.render('control.jade',{ title:'後臺電影添加頁', movie:{ title:'電影1', director:'史提芬', country:'美國', language:'英語', year:'2016', poster:'http://img31.mtime.cn/mg/2015/03/27/120537.13212993_270X405X4.jpg', summary:'填寫詳情', flash:'#' } }); });
查詢:
//首頁localhost:3000/ router.get('/', function(req, res, next) { movieModel.find({},function(err,movies){ if(err){ console.log(err); return; } res.render('index.jade',{ title:'網站首頁', movies:movies }); }); });
查詢單條:
//詳情頁 //localhost:3000/movie/1 router.get("/movie/:id",function(req,res){ var id=req.params.id; movieModel.findOne({"_id":id},function(err,movie){ if(err){ console.log(err); return; } res.render("detail.jade",{ title:"電影詳情", movie:movie }); }); });
終極測試:
先清除全部表數據
添加一條
添加後列表:
編輯
編輯後列表
刪除後列表