作为一个真正的网站,不能没有数据的支持,下面使用的数据库为mongodb,电影可能有的数据:电影名称、导演、国家、语言、上映时间、图片、简介、视频

4、使用路由

app.js

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.js

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.js

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.数据库连接

新增config文件夹用于存储数据库配置,在下面创建config.js存放数据库配置信息,mongoose.js用于连接数据库

初次使用mongoose?>>>>>>>>>>>>>>>>>

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();
.....

6、实现增删查看改

不知道怎么用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
});
}); });

终极测试:

先清除所有表数据

添加一条

添加后列表:

编辑

编辑后列表

删除后列表

下载>>

Nodejs电影建站开发实例(下)的更多相关文章

  1. Nodejs电影建站开发实例(上)

    网站环境:使用express框架.bootstrap样式.jade模板.mongoose数据库 npm insatll express -g npm insatll jada -g npm insat ...

  2. Mac电脑 阿里云ECS(ContentOS) Apache+vsftpd+nodejs+mongodb建站过程总结

    简介:我这里采用的阿里云免费提供的6个月ECS服务器:制作了一个简单的爬虫程序:里面很多功能还么做:搜索里面功能回去的数据未做处理会崩溃(大家不要点搜索功能):地址:http://loldragon. ...

  3. 在mvc4中多语言建站的实例

    环境:vs2012 asp.net mvc4. 实现方式:resource 资源文件,根据路由规则中Lang参数来判断载入哪种语言方式 在网上找到了相关资料,顺便自己做了个练习,新建工程之类的步骤就免 ...

  4. [web建站] 优课急送《零基础快速学习建站》视频+课件【价值399元】

    [课程介绍]你想快速建一个网站出来吗?你想从什么都不懂到一两天出一个漂漂亮亮的站吗?你想完成领导交给你的任务找人建站吗?你想自己建站来创业吗?你想学会建站之后,利用给别人建站来赚钱吗?你想建一个跟某个 ...

  5. [web建站] 极客WEB大前端专家级开发工程师培训视频教程

    极客WEB大前端专家级开发工程师培训视频教程  教程下载地址: http://www.fu83.cn/thread-355-1-1.html 课程目录:1.走进前端工程师的世界HTML51.HTML5 ...

  6. Nodejs学习笔记(三)——一张图看懂Nodejs建站

    前言:一条线,竖着放,如果做不到精进至深,那就旋转90°,至少也图个幅度宽广. 通俗解释上面的胡言乱语:还没学会爬,就学起走了?! 继上篇<Nodejs学习笔记(二)——Eclipse中运行调试 ...

  7. 开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程

    目录 基本原理 方法1 - 本机Windows下建站 (力荐) 下载安装node.js 用管理员权限打开命令行,安装hexo-cli和hexo 下载安装git 初始化hexo 使用hexo gener ...

  8. Uix Kit 快速建站前端开发套件-工具箱

    这个产品维护已经有一年了(由于业务需求不同,目前没有做中文版,产品本身是针对国外网站),自己本身是做UI出生,开发只是业余爱好,仅仅作为平时工作的需要.杂七杂八会一些前后端开发.并非职业码农! 我是一 ...

  9. nodejs建站+github page 建站问题总结

    本文介绍 昨天吃晚饭的时候,在B站偶然看到一个关于搭建自己博客的视频,过程讲的很详细,于是就有了自己想尝试一下的冲动,所以,在晚上的时候,尝试了下,但是,过程并没有视频中说的那么顺利,看了网上很多帖子 ...

随机推荐

  1. 贪心 Codeforces Round #301 (Div. 2) B. School Marks

    题目传送门 /* 贪心:首先要注意,y是中位数的要求:先把其他的都设置为1,那么最多有(n-1)/2个比y小的,cnt记录比y小的个数 num1是输出的1的个数,numy是除此之外的数都为y,此时的n ...

  2. HTTP请求中的User-Agent 判断浏览器类型的各种方法 网络爬虫的请求标示

    我们知道,当用户发送一个http请求的时候,浏览的的版本信息也包含在了http请求信息中: 如上图所示,请求 google plus 请求头就包含了用户的浏览器信息: User-Agent:Mozil ...

  3. javascript事件大全4

    javascript事件列表解说 事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown ...

  4. 在cmd下输入/g无效

    如图: 原来一:斜杠得是\ 二:命令和它之间没空格.这个符号和分号的使用是一样的.

  5. 浅谈Java中的Set、List、Map的区别

    http://developer.51cto.com/art/201309/410205_all.htm

  6. CentOS源列表

    vi /etc/yum.repos.d/CentOS-Base.repo CentOS 5: # CentOS-Base.repo # # The mirror system uses the con ...

  7. io资料

    jitsi red5 apache meeting2 openmeeting2 openfire http://www.onlycoder.net/ 在视频会议领域,有许多可以值得参考的开源项目,这些 ...

  8. BZOJ 3289 Mato的文件管理(莫队+离散化求逆序数)

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MB Submit: 2171  Solved: 891 [Submit][Status][ ...

  9. CSS3系列:流式(弹性)布局(flex布局)

    我的新伸缩盒子.http://www.cnblogs.com/leee/p/5533436.html

  10. maven Ubuntu14.04 安装

    参考:linux上安装使用maven 下载链接:官网Download 解压. 在root用户下执行: cd /opt mkdir maven chmod 755 /opt/maven tar -zvx ...