1. 程式人生 > 實用技巧 >mongoose 的使用【02】:【Express+Mongoose】Mongoose 預定義模式修飾符 Getters與 Setters修飾符

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 }
    ]

*/