mongodb模式模型設計及編碼-Mongoose
阿新 • • 發佈:2018-07-20
刪除 現在 fun ons dmi pan erro 操作 他能 走到這一步,我們的網站還不能稱為動態的網站,因為所要的數據都是偽造的,所以現在要對數據庫的模型進行設計
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方法,傳一個空對象就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