mongoose

anch發表於2024-03-19
  • 挖坑:集合CURD,文件CURD

  • [ 資料庫連線 ]
    • 連線一個不存在的資料庫,不會立即建立該資料庫,只有執行到文件物件的 save 等方法時,才會去建立該資料庫
      const mongoose = require('mongoose')
      // 這裡捕獲的是連結過程中發生的異常
      const db = mongoose.connect('mongodb://host:port/dbname').catch(err => console.log(err))
    
      // 安全模式連結資料庫,user 和 pwd 分別是使用者名稱和密碼
      const db = mongoose.conect('mongodb://user:pwd@host:port/dbname').catch(err => console.log(err))
    
      // 這裡使用 once 而不是 on,只有第一次 open 的時候輸出
      db.once('open', ()=> {console.log('database connect successful')})
    
      // 連結成功以後如果出現異常,處理異常
      db.on('error', err => console.log(err))
    

  • [ Schema ]
    • 結構支援的預設 type 型別:
    • https://mongoose.nodejs.cn/docs/schematypes.html#google_vignette
      • String | 專有型別選項 ,
      • Number ,
      • Date ,
      • Buffer,
      • Boolean,
      • Mixed,
      • ObjectId ,
      • Array,
      • Decimal128,
      • Map,
      • Schema,
      • UUID,
      • BigIng

  • [ 通用模式型別選項 ]
    • https://mongoose.nodejs.cn/docs/schematypes.html#schematype-options
      required,
      default,
      select, // 返回文件物件的時候是否返回該屬性,password一般不會返回,所以設定為 false
      validate(val),
      get(),
      set(val),
      alias('realname', 'name'), // realname 會被寫入資料庫,name 是其別名,用來簡化程式碼,name 也可以是一個字串陣列,用來設定多個別名
      immutable, // Boolean, 為 true 時,該屬性不允許被更改,更改操作會失效,除非設定文件物件的 isNew 屬性為 true
      transform(), 將schema 轉化為 json,一般不主動使用
    

  • [ model ]
  • 相關文章