マングース入門(3)マングースインデックス、組み込みのCURDメソッド、拡張静的メソッドとインスタンスメソッド、データ検証

1.マングースインデックス

インデックスは、データベーステーブルの1つ以上の列の値を並べ替える構造であり、データベースのクエリを高速化できます。MongoDBのインデックスは、いくつかの基本的なクエリ最適化手法を含め、従来のリレーショナルデータベースとほぼ同じです。

マングースでインデックスを作成する以前の方法に加えて、スキーマを定義するときにインデックスの作成を指定することもできます。

var DeviceSchema = new mongoose.Schema({
    
     
	sn: {
    
     
		type: Number, 
		// 唯一索引 
		unique: true 
	}, 
	name: {
    
     
		type: String, 
		// 普通索引 
		index: true 
	} 
});

2.マングースビルトインカード

Model.deleteMany()
Model.deleteOne()
Model.find()
Model.findById()
Model.findByIdAndDelete()
Model.findByIdAndRemove()
Model.findByIdAndUpdate()
Model.findOne()
Model.findOneAndDelete()
Model.findOneAndRemove()
Model.findOneAndReplace()
Model.findOneAndUpdate()
Model.replaceOne()
Model.updateMany()
Model.updateOne()

3.マングースCURDメソッドの拡張

ここに画像の説明を挿入
モデルの下のuser.js

var mongoose = require('./db.js');

var UserSchema = mongoose.Schema({
    
    
  name: {
    
    
    type: String
  },
  sn: {
    
    
    type: String,
    index: true
  },
  age: Number,
  status: {
    
    
    type: Number,
    default: 1
  }
})
//静态方法 
UserSchema.statics.findBySn = function (sn, cb) {
    
    
  //通过 find方法获取 sn的数据    this 关键字获取当前的model
  this.find({
    
     "sn": sn }, function (err, docs) {
    
    
    cb(err, docs)
  })
}

// 实例方法   (基本不用)
UserSchema.methods.print = function () {
    
    
  console.log('我是一个实例方法')
  console.log(this.name)
}
module.exports = mongoose.model('User', UserSchema, 'user');

最も外側のuser.js


var UserModel = require('./model/user.js');

// var user = new UserModel({
    
    
//     name: '赵六',
//     sn:'123456781',
//     age: 29
// });
// user.save();


// UserModel.findBySn('123456781',function(){})

UserModel.findBySn('123456782', function (err, docs) {
    
    
  if (err) {
    
    
    console.log(err);
    return;
  }
  console.log(docs)
})

var user = new UserModel({
    
    
  name: '赵六',
  sn: '123456781',
  age: 29
});
// user.save();
user.print();   //自定义的实例方法

第四に、マングースのデータ検証

1.マングース検証パラメーター

required:データを渡す必要があることを示します
max:数値型データの場合、最大値
min:数値型データの場合、最小値
enum:列挙型、データは列挙値
enum:['0'、'1'を満たす必要があります、'2']一致:追加されたデータは一致のルールに準拠している必要があります(通常)maxlength:最大長
minlength:最小長

var mongoose = require('./db.js');

//mongoose数据校验:用户通过mongoose给mongodb数据库增加数据的时候,对数据的合法性进行的验证
//mongoose里面定义Schema:字段类型,修饰符、默认参数 、数据校验都是为了数据库数据的一致性

//Schema,为数据库对象的集合,每个schema会映射到mongodb中的一个collection,定义Schema可以理解为表结构的定义
var UserSchema = mongoose.Schema({
    
    
  name: {
    
    
    type: String,//指定类型
    trim: true,   //修饰符         
    required: true  //这个字段必须传入
  },
  sn: {
    
    
    type: String,
    index: true,  //索引.
    set (val) {
    
      //自定义修饰符
      return val;
    },
    // maxlength:20,
    // minlength:10
    // match:/^sn(.*)/ ,
    validate: function (sn) {
    
    
      return sn.length >= 10;
    }
  },
  age: {
    
    
    type: Number,
    min: 0,    //用在number类型上面,最小0
    max: 150   //最大150
  },
  status: {
    
    
    type: String,
    default: 'success', //默认值
    enum: ['success', 'error']   //status的值必须在 对应的数组里面  注意枚举是用在String
  }
})

module.exports = mongoose.model('User', UserSchema, 'user');



2.マングースカスタムバリデーター

desc: {
    
     
	type: String, 
	// 自定义的验证器,如果通过验证返回 true,没有通过则返回 false 
	validate: function(desc) {
    
     
		return desc.length >= 10; 
	} 
}

おすすめ

転載: blog.csdn.net/qq_41880073/article/details/122897015