mongoose中Schema的拓展

Schema的默认参数

在定义Schema数据模式的时候,可以为字段设置默认值;
如果新增的时候,没有设置该字段的值,那么就会使用默认参数;

var userSchema = mongoose.Schema({
    name: String,
    age: Number,
    isUse: {
        type: Boolean,
        default: true
    }
})

var user = new UserModel({
    name: '张三',
    age: 20
})
user.save((err, data) => {
    console.log(data)
    // 插入数据
    // {
    //     name: '张三',
    //     age: 20,
    //     isUse: true
    // }
})

Schema设置索引

var userSchema = mongoose.Schema({
    name: {
        type: String,
        index: true, // 普通索引
    },
    loginName: {
        type: String,
        unique: true, // 唯一索引
    },
    age: Number,
})

// db.user.getIndexes()
// {
//         "v" : 2,
//         "key" : {
//                 "name" : 1
//         },
//         "name" : "name_1",
//         "background" : true
// },
// {
//         "v" : 2,
//         "key" : {
//                 "loginName" : 1
//         },
//         "name" : "loginName_1",
//         "background" : true,
//         "unique" : true
// }

Schema设置预定义模式修饰符

var userSchema = mongoose.Schema({
    name:String,
    loginName: {
        type: String,
        lowercase: true, // 全部小写
        // uppercase: true, // 全部大写
    },
    age: Number,
    sex: Number,
    description: {
        type: "string",
        default: '描述',
        trim: true, // 去除首尾的空格
    }
})

Schema自定义修饰符

  • set修饰符:在增加数据的时候对数据进行操作
  • get修饰符:修改的是model实例化的数据,不会影响数据库表的数据,一般不用
var userSchema = mongoose.Schema({
    name:String,
    loginName: String,
    age: {
        type: String,
        set(val) {
            return `${val}`
        },
        get(val) {
            return `今年${val}`
        }
    },
    sex: Number,
})

var user = new UserModel({
    name: '张三',
    loginName: 'zhangsan',
    age: 20,
    sex: 1
})
console.log(user.age) // '今年20岁'

user.save((err, data) => {
    console.log(data)
    // {
    //     name: '张三',
    //     loginName: 'zhangsan',
    //     age: '20岁',
    //     sex: 1,
    // }
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值