標籤:col 編譯 erro count lang 工具 val 資料 view
走到這一步,我們的網站還不能稱為動態網站,因為所要的資料都是偽造的,所以現在要對資料庫的模型進行設計
Mongoose我們用到的工具模組是Mongoose,他能對Mongodb進行建模的這樣一個操作,在Mongoose裡面有這樣幾個概念,分別是
Schema: 模式,在模式裡面我們對資料進行定義,定義欄位對類型,比如是字串類型,還是數字類型Model: 模型,編譯模型,對傳入對Schema進行編譯,然後會產生建構函式Documents: 文檔
Schema-模式定義
var mongoose = require(‘mogoose‘);var MovieSchema = new mongoose.Schema({ doctor:String, title:String, language:String, country:String, year:Number, summary:String})
Model-編譯模型
var mongoose = require(‘mongoose‘);var MovieSchema = require(‘./schemas/movie‘);var Movie = mongoose.model(‘Movie‘,MovieSchema)module.exports = Movie
有了資料庫模型以後,事情就變得好辦了,現在對文檔執行個體化,只需要調用模型,也就是這個建構函式,傳入一條資料,然後再調用save方法,就可以把這條資料給傳入到資料庫裡面去
//Documents-文檔執行個體化var Movie = require(‘./model/movie‘);var movie = new Movie({ title:‘機械戰警‘, doctor:‘何塞.帕迪利亞‘, year:2018})movie.save(function(err){ if(err){ return handleError(err); }})
資料庫的查詢分成多種,查詢批量的,單條的,或者指定條件的查詢,那麼批量查詢只需要調用模型的find方法,傳一個Null 物件就ok了
//Documents - 資料庫批量查詢var Movie = require(‘./models/movie‘);app.get(‘/‘,function(req,res){Movie .find({}) .exec(function(err,movies){ res.render(‘index‘,{ title:‘imooc首頁‘, movies:movies }) })})
單條的話,傳入一個特定的key,比如Movie.findOne
//Documents - 資料庫單條查詢var Movie = require(‘./models/movie‘);app.get(‘/‘,function(req,res){ Movie .findOne({_id:id}) .exec(function(err,movies){ res.render(‘index‘,{ title:‘imooc首頁‘, movies:movies }) })})
單條資料的刪除,直接調用模型的remove方法,傳入一個特定的key和value就可以了
//Documents - 資料庫單條刪除var Movie = require(‘./models/movie‘);app.get(‘/‘,function(req,res){ Movie .remove({_id:id},function(err,movie){ if(err){ console.log(err); } })})
然後我們需要調整一下模式和模型,他們目錄的層次
nodeMongodb node_modules bower_components view index.jade detail.jade admin.jade list.jade models movie.js schemas movie.js app.js
最後我們來實現資料庫的增刪改查,以及開發後端的邏輯
mongodb模式模型設計及編碼-Mongoose