Node开发--->11_Node.js_mongoDB验证规则

2.6 mongoose验证

在创建集合的时候,可以为当前集合当中的字段去设置一些格式上的验证规则。比如:当前字段的类型是字符串类型,我们可以设置字段在存入值的时候,限定字符串的最大和最小长度,当验证成功的时候,当前的字段就可以插入集合。

验证规则之required:true必传字段

在创建集合的时候,规定了集合可以拥有哪些字段,默认情况下这些字段都是可选的

//引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err, '数据库连接失败'));

//创建集合规则
const postScheam = new mongoose.Schema({
    // title: String,是曾经的写法,如果这样写就指定不了验证规则
    //现在修改写法如下:
    title: {
        type: String,
        //现在如果不传title这个字段就会报错
        required: true
    }
});
//利用规则创建集合
const Post = mongoose.model('Post', postScheam);

//传一个空对象,不插入type字段,那么就会报错
//因为集合规则中有限制:如果不传type,就不会插入成功
Post.create({}).then(res => console.log(res))

运行后
Node开发--->11_Node.js_mongoDB验证规则
同时我们还可以自定义更加友好的报错信息

//引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err, '数据库连接失败'));

//创建集合规则
const postScheam = new mongoose.Schema({
    // title: String,是曾经的写法,如果这样写就指定不了验证规则
    //现在修改写法如下:
    title: {
        type: String,
        //定义更加优化的报错信息
        required: [true, '请传入文章标题']
    }
});
//利用规则创建集合
const Post = mongoose.model('Post', postScheam);

Post.create({}).then(res => console.log(res))

运行后
Node开发--->11_Node.js_mongoDB验证规则

验证规则之minlength,maxlength

针对于字符串,限定字段的最大最小长度

//引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err, '数据库连接失败'));

//创建集合规则
const postScheam = new mongoose.Schema({
    title: {
        type: String,
        required: [true, '请传入文章标题'],
        //限定title的最下和最大长度的
        minlength: 2,
        maxlength: 5
    }
});
//利用规则创建集合
const Post = mongoose.model('Post', postScheam);

//传入的长度与规定的长度不符合,也报错
Post.create({ title: 'a' }).then(res => console.log(res))

运行后
Node开发--->11_Node.js_mongoDB验证规则
minlength和maxlength都可以自定义错误信息,形式同require

验证规则之trim

去除字符串两边的空格

//引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err, '数据库连接失败'));

//创建集合规则
const postScheam = new mongoose.Schema({
    // title: String,是曾经的写法,如果这样写就指定不了验证规则
    //现在修改写法如下:
    title: {
        type: String,
        required: [true, '请传入文章标题'],
        minlength: 2,
        maxlength: 5,
        //去除字符串两边的空格
        trim: true
    }
});
//利用规则创建集合
const Post = mongoose.model('Post', postScheam);

//trim去除字符串两边的空格 插入到数据库后左右两边无空格
Post.create({ title: '         aa      ' }).then(res => console.log(res))

Node开发--->11_Node.js_mongoDB验证规则

验证规则之min,max

针对数值字段类型

//引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err, '数据库连接失败'));

//创建集合规则
const postScheam = new mongoose.Schema({:
    title: {
        type: String,
        required: [true, '请传入文章标题'],
        minlength: 2,
        maxlength: 5,
        trim: true
    },
    age: {
        type: Number,
        min: 18,
        max: 100
    }
});
//利用规则创建集合
const Post = mongoose.model('Post', postScheam);

//年龄小于18 报错
Post.create({ title: 'aa', age: 10 }).then(res => console.log(res))

Node开发--->11_Node.js_mongoDB验证规则

验证规则之default

对于非可选字段,当插入数据的时候,不为该字段赋值,那么就会自动有一个默认值

//引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose');
//数据库连接
mongoose.connect('mongodb://localhost/playground', { useNewUrlParser: true })
    .then(() => console.log('数据库连接成功'))
    .catch(err => console.log(err, '数据库连接失败'));

//创建集合规则
const postScheam = new mongoose.Schema({
    // title: String,是曾经的写法,如果这样写就指定不了验证规则
    //现在修改写法如下:
    title: {
        type: String,
        required: [true, '请传入文章标题'],
        minlength: 2,
        maxlength: 5,
        trim: true
    },
    age: {
        type: Number,
        min: 18,
        max: 100
    },
    publishDate: {
        //该字段的类型是时间
        //不为该字段赋值的时候,默认传递当前的时间
        type: Date,
        default: Date.now //默认传递的时间
    }
});
//利用规则创建集合
const Post = mongoose.model('Post', postScheam);

//不传递publishDate
Post.create({ title: 'aa', age: 60 }).then(res => console.log(res))

运行后
Node开发--->11_Node.js_mongoDB验证规则
打开campass
Node开发--->11_Node.js_mongoDB验证规则

上一篇:javascript – Node.js mongodb驱动程序async / await查询


下一篇:Markdown使用指南(1)——基础语法