1. 程式人生 > >mongodb模式模型設計及編碼-Mongoose

mongodb模式模型設計及編碼-Mongoose

刪除 現在 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