mongoose 的使用【02】:【Express+Mongoose】Mongoose 预定义模式修饰符 Getters与 Setters修饰符

 

./model/user.js
/*
  mongoose 的自定义修饰符: Getters 与 setters
    除了mongoose内置修饰符以外,还可以通过 set (建议使用) 修饰符,对增加数据的时,对数据进行格式化;
    也可以通过 get(不建议使用)在 实例获取数据 的时候 对 实例数据 进行格式化。
*/

var mongoose = require("./db.js");
var userSchema = mongoose.Schema({
  sn: {
    type: Number,
    unique: true, //唯一索引
    // index: true, //普通索引
  },
  name: {
    type: String,
    upperCase: true, //全部大写
    // lowerCase: true,//全部小写
    get(params) {
      return "get加在前面的:" + params;
    },
  },
  title: {
    type: String,
    maxlength: 200, //最大长度
    minlength: 1, //最小长度
    required: true, //必填字段
    trim: true, //去除左右空格
  },
  age: {
    type: Number,

    max: 150, //最大值
    min: 0, //最小值
  },
  redirect: {
    type: String,
    // 自定义修饰符: set方法是在增加数据的时候对redirect字段进行处理
    set(parmas) {
      //parmas参数可以获取redirect的值 、   返回的数据就是redirect在数据库实际保存的值
      //   if (!parmas) return parmas;
      if (!parmas) {
        return "";
      } else {
        if (parmas.indexOf("http://") != 0 && parmas.indexOf("https://") != 0) {
          return "http://" + parmas;
        }
        return parmas;
      }
    },
  },
  status: {
    try: Number,
    default: 0, //默认填充
  },
});
module.exports = mongoose.model("User", userSchema, "users");

 

user.js

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


// ./model/user.js 中 userSchema 的 name 里的 get 对实例进行操作
var user = new UserModel({ name: "赵六", age: 20 });
console.log(user.age); //20
console.log(user.name); // get加在前面的:赵六

UserModel.find({}, function (err, data) {
  if (err) return console.log(err);
  console.log(data);
});

/*
    PS D:\nodeDemo\mongoose02> node .\user.js
    20 
    get加在前面的:赵六--【按顺序执行完了实例的代码才执行数据库的连接】
    连接数据库成功
    [
    { _id: 5ffc15140e5352204c72840e, name: '张三', age: 20, __v: 0 },
    { _id: 5ffc1adc0c7993265064ef22, name: '李四', age: 20, __v: 0 }
    ]

*/

 

上一篇:MongoDB-mongoose 默认参数


下一篇:13.Mongoose简介