Premiers pas avec Mongoose (3) Index Mongoose, méthode CURD intégrée, méthode statique étendue et méthode d'instance, validation des données

1. Indice de mangouste

Un index est une structure qui trie les valeurs d'une ou plusieurs colonnes dans une table de base de données, nous permettant d'interroger la base de données plus rapidement. Les index de MongoDB sont presque identiques aux bases de données relationnelles traditionnelles, y compris certaines techniques d'optimisation des requêtes de base.

En plus de la manière précédente de créer des index dans mongoose, nous pouvons également spécifier la création d'index lors de la définition de Schema.

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

2. CURD intégré à la mangouste

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. Extension de la méthode Mongoose CURD

insérez la description de l'image ici
user.js sous modèle

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');

utilisateur le plus externe.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();   //自定义的实例方法

Quatrièmement, la vérification des données de Mongoose

1. Paramètres de vérification de la mangouste

required : indique que les données doivent être passées
en max : pour les données de type Number, valeur maximale
min : pour les données de type Number, valeur minimale
enum : type d'énumération, les données doivent respecter la valeur
d'énumération enum : ['0', '1 ' , '2'] match : les données ajoutées doivent respecter les règles de correspondance (régulières) maxlength : longueur maximale
minlength : longueur minimale

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. Validateur personnalisé Mongoose

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

Je suppose que tu aimes

Origine blog.csdn.net/qq_41880073/article/details/122897015
conseillé
Classement