1. 程式人生 > >mongoDB資料庫 之 Mongoose的使用

mongoDB資料庫 之 Mongoose的使用

簡介

Mongoose是一個物件文件模型(ODM)庫,它對Node原生的MongoDB模組進行了進一步的優化封裝,並提供了更多的功能。核心物件包括Schema、model、document三部分。

優勢

  • 1)可以為文件建立一個模式結構(Schema)
  • 2)可以對模型中的物件/文件進行驗證
  • 3)資料可以通過型別轉換轉換為物件模型
  • 4)可以使用中介軟體來應用業務邏輯掛鉤
  • 5)比Node原生的MongoDB驅動更容易

三部分介紹

Schema方法

定義:模式物件,對集合進行約束

model方法

定義:模型物件,相對於資料庫中的集合,通過該物件對集合進行各種操作

document方法

定義:相當於資料庫中的文件,可以通過該物件對文件進行各種操作

mongoose建立例項物件,連線資料庫例項的demo

一般步驟

  1. 引入mongoose模組
  2. 建立schema文件物件
  3. 建立約束
  4. 建立集合物件
  5. 建立文件物件
  6. 將文件物件儲存到資料庫中
  7. 連線資料庫
  8. 監聽資料庫是否連線成功
  9. 將建立過程的邏輯放入promise物件中,避免回撥地獄
  10. 如果資料庫連線成功,執行.then,失敗,執行.catch

程式碼實現

//1、引入mongoose模組
var mongoose = require("mongoose")


//9、建立promise物件
var promise = new Promise((resolve,reject)=>{
    //7、連線資料庫
    mongoose.connect("mongodb://localhost:27017/mongoose_test1",{useNewUrlParser:true});
    //8、設定資料庫連線的集合
    mongoose.connection.once("open",err=>{
      if(!err){
        console.log("資料庫連線成功")
        resolve();
      }else{
        console.log(err);
        reject(err);
      }
    })
})

//10、呼叫.then函式
promise
  .then(()=>{
  //  資料庫連線成功

      //2、建立schema物件
      var Schema = mongoose.Schema;
      //3、建立約束
      var studentsSchema = new Schema({
        name:String,
        age:Number,
        sex:String,
        phone:{
          type:String,   //字串型
          unique:true,   //唯一的
          required:true  //必須寫,不寫會報錯
        },
        info:Schema.Types.Mixed,  //混合型
        hobby:[String],  //由於hobby可以有多個,用陣列
        meta:{
          createTime:{
            type:Date,
            default:Date.now()   //預設時間,是現在
          },
          updateTime:{
            type:Date,
            default:Date.now()
          }
        }
      })
      //4、建立文件物件
      var Students = mongoose.model('Students',studentsSchema);
     //5、建立集合物件
      var studentS = new Students({
        name:"許真真1",
        age:23,
        sex:"女",
        phone:"13141666412",
        info:"喜歡你",
        hobby:["讀書","吃飯"]
      })
    // 6、儲存建立的集合物件
      studentS.save(err=>{
        if(!err){
          console.log("資料儲存成功")
        }else{
          console.log(err);
        }
      })
  })
  .catch(err=>{
    console.log(err);
  })