[译]Mongoose指南 - 验证】的更多相关文章

开始前记住下面几点 Validation定义在SchemaType中 Validation是一个内部的中间件 当document要save前会发生验证 验证不会发生在空值上 除非对应的字段加上了 required validator 可以自定义验证器 内置的验证器 所有的SchemaType都有required验证器 Number有min和max验证器 String有enum和match验证器 自定义验证器 //确保值是something function validator(val){ ret…
使用mongoose.connect()方法创建连接 mongoose.conect('mongodb://localhost/myapp'); 上面的代码是通过默认端口27017链接到mongodb的myapp数据库.我们还可以给url设定一些特定的参数: mongoose.conect('mongodb://username:pws@host:port/databasename?options...'); Options connect方法可以接受一个options对象 mongoose.c…
定义schema 用mongoose的第一件事情就应该是定义schema. schema是什么呢? 它类似于关系数据库的表结构. var mongoose = require('mongoose'); var schema = mongoose.Schema; var blogSchema = new Schema({ titile: String, body: String, comments: [{body: String, date: Date}], date: {type: Date,…
MongoDB没有join, 但是有的时候我们需要引用其它collection的documents, 这个时候就需要populate了. 我们可以populate单个document, 多个document, plain object, multiple plain objects或query返回的全部object. var mongoose = require('mongoose'); var Schema = mongoose.Schema; var personSchema = new S…
查询有带callback和不带callback两种方式 所有mongoose的callback都是这种格式: callback(err, result) var Person = mongoose.model('Person', yourSchema); Person.findOne({'name.last':'Ghost'}, 'name occupation', function(err, person){ if(err) return handleError(err); console.l…
编译你的第一个model var xxSchema = new Schema({name: 'string', size: 'string'}); var Tank = mongoose.model('Tank', schema); 构造document document是model的实例. 创建更新document到数据很容易 var Tank = mongoose.model('Tank', tankSchema); var small = new Tank({size:'small'});…
Schema支持插件, 这样你就可以扩展一些额功能了 下面的例子是当document save的时候自定更新最后修改日期的出插件 // lastMod.js module.exports = exports = function lastModifiedPlugin (schema, options) { schema.add({ lastMod: Date }) schema.pre('save', function (next) { this.lastMod = new Date next(…
中间件是一些函数, 当document发生init, validate, save和remove方法的时候中间件发生. 中间件都是document级别的不是model级别的. 下面讲讲两种中间件pre和post pre 一共有两种pre中间件serial和parallel 发生在被附挂方法之前 serial serial中间件是一个一个执行的串行执行 var schema = new Schema(..); schema.pre('save', function(next){ //do stuf…
更新 有几种方式更新document. 先看一下传统的更新方法 Tank.findById(id, function(err, tank){ if(err) return handleError(err); tank.size = "large"; tank.save(function(err){ if(err) return handleError(err); res.send(tank); }); }); 上面的代码是先查找出一个document然后在更新. 如果我们不想查找doc…
在基于SpringMVC框架的开发中,我们经常要对用户提交的字段进行合法性验证,比如整数类型的字段有个范围约束,我们会用@Range(min=1, max=4).在实际应用开发中,我们经常碰到一些自己业务的场景要自定义一些验证规则,而这是标准的JSR-303和Hibernate Validation所不具备的,所以我们就要根据JSR-303的规范来扩展我们自定义的验证规则注释. 假设我们现在有个接口要接收一个手机的字段, 它的约束规则是13位数字字符. 我们可以通过正则表达式完成: ^\d{13…