Mongoose 数据校验

一、Mongoose 校验参数

required : 表示这个数据必须传入
max: 用于 Number 类型数据,最大值
min: 用于 Number 类型数据,最小值
enum:枚举类型,要求数据必须满足枚举值 enum: [‘0’, ‘1’, ‘2’]
match:增加的数据必须符合 match(正则)的规则
maxlength:最大长度
minlength:最小长度

var UserSchema = new mongoose.Schema({ name:{ type:String, required: true, },age: { type: Number, // 是否必须的校验器 required: true, // 数字类型的最大值校验器 max: 120, // 数字类型的最小值校验器 min: 0 },status: { type: String, // 设置字符串的可选值 enum: ['0', '1', '2'] },phone:{ type:Number, match: /^\d{11}$/ },desc: { type: String, maxlength:20, minlength:10 } });

二、Mongoose 自定义的验证器

在缺省情况下创建的索引均不是唯一索引。下面的示例将创建唯一索引,如:

var UserSchema = new mongoose.Schema({ name:{ type:String, required: true, },age: { type: Number, // 是否必须的校验器 required: true, // 数字类型的最大值校验器max: 120, // 数字类型的最小值校验器 min: 0 },status: { type: String, // 设置字符串的可选值 enum: ['0', '1', '2'] },phone:{ type:Number, match: /^\d{11}$/ },desc: { type: String, // 自定义的验证器,如果通过验证返回 true,没有通过则返回 false validate: function(desc) { return desc.length >= 10; } } });

user.js:

var mongoose = require('./db.js');var UserSchema = mongoose.Schema({name: {type: String,required: true,get(params) {return "a001" + params}},sn: {type: String,index: true,maxlength: 20,minlength: 10,// match: /^sn(.*)/i,validate: function(sn) {return sn.length >= 10}},age: {type: Number,min: 0,max: 150},status: {type: Number,default: 1, // 默认数据enum: [0,1,2]}
})
// 静态方法
UserSchema.statics.findBySn = function(sn,cb) {// 通过find方法获取sn的数据  通过this关键字来获取当前的Modelthis.find({"sn": sn}, function(err,data) {cb(err, data)})
}// 实例方法
UserSchema.methods.print = function() {console.log('我是一个实例方法')console.log(this)
}var UserModel = mongoose.model('User', UserSchema, 'users')
module.exports = UserModel

app.js:

var UserModel = require('./model/user.js')var user = new UserModel({name: '李四322',sn: 'sn888',age: 10,status: 1
})
// UserModel.findBySn('8888', function(err, data) {
//     if(err) {
//         console.log(err)
//         return;
//     }
//     console.log(data)
// })// user.print(); // 自定义的实例方法// console.log(user.name,user.age)user.save(function(err) {if(err) {console.log(err)return;}// 新增数据成功后,查询数据UserModel.find({}, function(err,data) {if(err) {console.log(err)return;}console.log(data)})
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470683.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搞懂RNN

文章目录1 什么是RNN2 LSTM3 Training3.1 Learning Target3.2 为什么难train4 应用举例4.1 Many To One4.2 Many To Many4.3 其他本文为李弘毅老师【Recurrent Neural Network(Part I)】和【Recurrent Neural Network(Part II)】的课程笔记,课程视频来源于youtube(需…

bp神经网络预测_股指期货价格变动趋势往往反映的是股票价格的走势,因此BP神经网络对股指期货价格的准确预测就是对股票价格的准确预测。...

一只猫の生活态度对于投资者而言,利用BP神经网络模型对股指期货价格进行准确预测,可以帮助投资者构建较佳的投资组合,从而获取较好的投资收益,规避系统风险;对于国家而言,准确预测股指期货价格走势&#xf…

ThinkPHP包含文件

在当前模版文件中包含其他的模版文件使用include标签&#xff0c;标签用法&#xff1a; <include file模版表达式或者模版文件1,模版表达式或者模版文件2,... /> 使用模版表达式 模版表达式的定义规则为&#xff1a;模块主题/控制器/操作 例如&#xff1a; <include f…

Mongoose aggregate 多表关联查询

1. 查询每个order订单中的所有orderItem&#xff08;多表关联查询&#xff09; order.js: var mongoose require(./db.js)var OrderSchema mongoose.Schema({order_id: String,uid: Number,trade_no: String,all_price: Number,all_num: Number })var OrderModel mongoose…

搞懂Transformer

文章目录1 内容简述2 seq2seq的常用模块3 Self-attention4 Multi-head Self-attention5 Positional Encoding6 Transformer参考资料文为李弘毅老师【Transformer】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来自…

excel计算二元线性回归_怎么看懂Excel线性回归参数

虽然之前用python做线性回归的时候看上去好像很简单&#xff0c;但是直到我在excel上实践了线性回归&#xff0c;发现有很多指标值得去参考&#xff0c;对于在python上实现有指导作用。打开excel2016&#xff0c;先找个数据我们这里直接选择做线性回归&#xff0c;在菜单栏选择…

冲刺阶段 day 6

项目进展&#xff1a;学生管理这部分已经进展的差不多了&#xff0c;调试了几遍,改了几个小Bug之后就没有什么问题了,基本完成&#xff0c;如若后续还有一些新的功能到时候再自行加入。明天开始教师部分。 存在问题&#xff1a;我觉得我们的项目还是比较课堂&#xff0c;比较中…

Chapter2-1_Voice Conversion(Feature Disentangle)

文章目录1 什么是Voice Conversion2 实际实现中的细节3 根据数据集分类4 Feature disentangle5 训练技巧本文为李弘毅老师【Voice Conversion - Feature Disentangle】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均…

1 0.99999的悖论_无限小数与芝诺悖论

问题昨天晚上&#xff0c;小学6年级的外甥女从数学课外辅导班补习回来&#xff0c;兴冲冲的对家里人说&#xff0c;哎&#xff0c;我发现了一个数学的大bug啊。你说1/3不是一个无限循环小数0.33333...&#xff0c;那么三个1/3加起来&#xff0c;不就是0.99999...吗&#xff1f;…

Mongoose 中使用 populate 实现关联查询

一、Mongoose populate 官方文档 https://mongoosejs.com/docs/populate.html 二、Mongoose populate 关联查询 1、定义 ref var ArticleSchema new Schema({ title:{type: String, unique: true},cid : {type: Schema.Types.ObjectId, ref:ArticleCate //model 的名称 }, …

FPGA开发全攻略——概念篇

原文链接&#xff1a; FPGA开发全攻略连载之一&#xff1a;FPGA为什么这么热&#xff1f; FPGA开发全攻略连载之二&#xff1a;为什么工程师要掌握FPGA开发知识&#xff1f; FPGA开发全攻略连载之三&#xff1a;FPGA基本知识与发展趋势&#xff08;part1&#xff09; FPGA开发全…

vue @input带参数_Vue 全家桶开发的一些小技巧和注意事项

前言用 vue 全家桶开发一年多了&#xff0c;踩过不少坑&#xff0c;也解决了很多的问题&#xff0c;把其中的一些点记录下来&#xff0c;希望能帮到大家。以下内容基于最新版的 vue vuex vue-router axios less elementUI&#xff0c;vue 脚手架是 vue-cli3。css 的 scope…

Chapter2-2_Voice Conversion(CycleGAN and StarGAN)

文章目录1 内容简述2 CycleGAN3 StarGAN本文为李弘毅老师【Voice Conversion - CycleGAN and StarGAN】的课程笔记&#xff0c;课程视频youtube地址&#xff0c;点这里&#x1f448;(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PPT&#xff0c;若有侵权&#xff0c;必定删…

cookie与session原理详解

一、 Cookie cookie&#xff1a;浏览器在电脑硬盘中开辟的一块空间&#xff0c;主要供服务器端存储数据。 cookie中的数据是以域名的形式进行区分的。cookie中的数据是有过期时间的&#xff0c;超过时间数据会被浏览器自动删除。cookie中的数据会随着请求被自动发送到服务器端。…

Hibernate写hql语句与不写hql语句的区别?

写hql语句与不写hql语句的区别&#xff1f; 写hql语句:书写HQL语句&#xff0c;所有的查询与投影的设计均使用HQL语句完成。 不写hql语句:没有任何查询语句&#xff0c;所有的查询与投影的设计使用面向对象格式完成。 二者选用的时机&#xff1a; 不写hql语句&#xff0c;有时比…

eclipse的servlet默认不执行index_MySQL之索引及执行计划分析

mysql官方对索引的定义为&#xff1a;索引(index)是帮助MySQL高效获取数据的数据结构。索引的本质&#xff1a;索引是数据结构。索引就是排好序的快速查找数据结构一般来说索引本身也很大不可能全部存储在内存中&#xff0c;因此索引往往以索引文件的形式存储在磁盘上平时所说的…

Chapter3-1_Speech Separation(Deep Clustering, PIT)

文章目录1 内容简述2 评价指标2.1 Signal-to-noise ratio (SNR)2.2 Scale invariant signal-to-distortion ratio (SI-SDR)2.3 其他的评价指标3 Permutation Issue4 Deep Clustering5 PIT本文为李弘毅老师【Speech Separation - Deep Clustering, PIT】的课程笔记&#xff0c;课…

Joi验证模块的使用

1. 安装 官网中文文档&#xff1a;https://joi.dev/api/?v12.1.0#validatevalue-schema-options-callback //下载14.3.1 npm install 14.3.1注意&#xff1a;下载14.3.1&#xff0c;在npm install joi的时候默认下载的是最新版本 joi17.1.1,对于一些API高版本会舍弃从而出现…

穷养富养知乎见解

真正的“穷养”&#xff0c;应该是不惯着&#xff0c;让他知道要想得到需要付出&#xff0c;而不是让他认为就是没有&#xff0c;无论如何不能得到。真正的“富养”&#xff0c;应该是为他提供所有成长的条件和选择的权利&#xff0c;而不是一味的满足他的欲望&#xff0c;却不…

python导入模块以及类_python—模块导入和类

1.查询模块&#xff1a;按目录依次查找需要导入的模块&#xff0c;模块目录一般在&#xff1a;/usr/lib64/python2.7 In [2]: sys.path Out[2]: [, /usr/bin, /usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg, /usr/lib64/python27.zip, /usr/l…