《Node + Express 快速搭建網(wǎng)站》學(xué)習(xí)筆記-6編寫數(shù)據(jù)庫交互代碼

3-2編寫數(shù)據(jù)庫交互代碼

ch3-項目數(shù)據(jù)庫實現(xiàn)

編寫數(shù)據(jù)庫交互(增改查)代碼

(定義好)模式schema,并(編譯好)模型model之后,再利用mongoose模塊連接本地數(shù)據(jù)庫

需要在本地預(yù)先安裝MongoDB

app.js

var express = require('express');
// var path = require('path');  //靜態(tài)資源目錄,新版express要獨立安裝static
var serveStatic = require('serve-static');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var _ = require('underscore');  //根據(jù)新對象覆蓋老對象的值
var Movie = require('./models/movie');  //取得模型
var port = process.env.PORT || 3000;
var app = express();

mongoose.connect('mongodb://localhost/imooc');  //連接數(shù)據(jù)庫

app.set('views', './views/pages/'); //修改視圖模板目錄
app.set('view engine', 'jade');
// app.use(express.bodyParser());   //表單數(shù)據(jù)格式化,新版express不捆綁bodyParser
// app.use(express.static(path.join(__dirnamr, 'bower_components')));   //告訴express頁面請求中樣式和腳本的請求去path中查找
app.use(bodyParser.urlencoded());
// app.use(bodyParser.json({limit: '1mb'}));  //body-parser 解析json格式數(shù)據(jù)
// app.use(bodyParser.urlencoded({            //此項必須在 bodyParser.json 下面,為參數(shù)編碼
  // extended: true
// }));
app.use(serveStatic('bower_components'));
app.listen(port);

console.log('imooc started on port ' + port);

//路由
//index page
app.get('/', function(req, res){    //路由規(guī)則和URL地址相匹配
    Movie.fetch(function(err, movies){  //獲取所有數(shù)據(jù)
        if(err){
            console.log(err);
        }
        res.render('index', {   //渲染模板
            title: 'imooc 首頁',
            movies: movies
        });
    });
    
});

//detail page
app.get('/movie/:id', function(req, res){
    var id = req.params.id;
    Movie.findById(id, function(err, movie){    //獲取指定id電影數(shù)據(jù)
        res.render('detail', {
            title: 'imooc ' + movie.title,
            movie: movie
        });
    });

});

//admin page
app.get('/admin/movie', function(req, res){
    res.render('admin', {
        title: 'imooc 錄入頁',
        movie: {
            doctor: '',
            country: '',
            title: '',
            year: '',
            poster: '',
            language: '',
            flash: '',
            summary: ''
        }
    });
});

//admin update movie
app.get('/movie/update/:id', function(req, res){
    var id = req.params.id;
    if(id){
        Movie.findById(id, function(err, movie){
            res.render('admin', {
                title: 'imooc 后臺更新頁',
                movie: movie
            });
        });
    }
});

//admin post movie
app.post('/admin/movie/new', function(req, res){
    var movieObj = req.body.movie;
    var id = movieObj._id;
    if(id !== 'undefined'){
        Movie.findById(id, function(err, movie){
            if(err){
                console.log(err);
            }

            _movie = _.extend(movie, movieObj);
            _movie.save(function(err, movie){
                if(err){
                    console.log(err);
                }

                res.redirect('/movie/' + movie._id);
            });

        });
    }else{
        _movie = new Movie({
            doctor: movieObj.doctor,
            title: movieObj.title,
            country: movieObj.country,
            language: movieObj.language,
            year: movieObj.year,
            poster: movieObj.poster,
            summary: movieObj.summary,
            flash: movieObj.flash,
        });
        _movie.save(function(err, movie){   //存儲數(shù)據(jù)
            if(err){
                console.log(err);
            }

            res.redirect('/movie/' + movie._id);
        });
    }
});

//list page
app.get('/admin/list/', function(req, res){
    Movie.fetch(function(err, movies){
        if(err){
            console.log(err);
        }
        res.render('list', {
            title: 'imooc 列表頁',
            movies: movies
        });
    });
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容