1. 程式人生 > >Mongoose 內置 CURD 方 法、擴展 Mongoose Model 的靜態方法和 實例方法

Mongoose 內置 CURD 方 法、擴展 Mongoose Model 的靜態方法和 實例方法

基本上 fault number upd 實例方法 方法 ODB log ejs

Mongoose 內置 CURD 方 法

Mongoose 內置 CURD 方 法文檔地址:https://mongoosejs.com/docs/queries.html

常用的方法如下:

Model.deleteMany()

Model.deleteOne()

Model.find()

Model.findById()

Model.findByIdAndDelete()

Model.findByIdAndRemove()

Model.findByIdAndUpdate()

Model.findOne()

Model.findOneAndDelete()

Model.findOneAndRemove()

Model.findOneAndUpdate()

Model.replaceOne()

Model.updateMany()

Model.updateOne()

擴展 Mongoose Model 的靜態方法和實例方法

需求:擴展一個通過name來查找的方法findByName(靜態方法)

const mongoose = require(‘mongoose‘);

mongoose.connect(‘mongodb://127.0.0.1:27017/eggcms‘, { useNewUrlParser: true }, (err) => {
  if(err){
    
return console.log(err); } console.log(‘數據庫連接成功‘) }); module.exports = mongoose
let mongoose = require(‘./db‘)

let UserSchema = mongoose.Schema({
  name: {
    type: String
  },
  age: {
    type: Number
  },
  status: {
    type: Number,
    default: 1
  }
})


// 靜態方法
UserSchema.statics.findByName = function
(name, cb) { this.find({ "name": name }, (err, docs) => { cb(err, docs) }) } // 定義model操作數據庫 let UserModel = mongoose.model(‘User‘,UserSchema,‘users‘); module.exports = UserModel
let UserModel = require(‘./model/users‘)

UserModel.findByName(‘黃中國‘, (err, docs) => {
  if (err) {
    return console.log(err)
  }
  console.log(docs)
})

技術分享圖片

實例方法再工作中基本上不會使用,實例方法實例、

let mongoose = require(‘./db‘)

let UserSchema = mongoose.Schema({
  name: {
    type: String
  },
  age: {
    type: Number
  },
  status: {
    type: Number,
    default: 1
  }
})


// 實例方法(基本上不用)
UserSchema.methods.print = function(name, cb) {
  console.log(‘實例方法‘)
  console.log(this.name)
}

// 定義model操作數據庫
let UserModel = mongoose.model(‘User‘,UserSchema,‘users‘);


module.exports = UserModel

使用這個方法的時候需要創建具體的UserModel對象,然後通過這個對象來調用

let UserModel = require(‘./model/users‘)

// 增加數據
let u = new UserModel({
  name: ‘ 劉花 ‘,
  age: 21
})

u.print()

技術分享圖片

Mongoose 內置 CURD 方 法、擴展 Mongoose Model 的靜態方法和 實例方法