Mongoose中间件入门示例
2017-10-07 22:06
302 查看
Mongoose的中间件功能很强大,可以把复杂的异步程序,诸如各种数据验证的方法,拆分后按照同步顺序执行,这里就举一个简单的中间件用法
我们看到保存是成功的,但是只保存了一条document.
如果你再运行一次create操作,会看到控制台报错:
然后你再去看下mongoDB的客户端,里面还是一条数据,并没有重复记录。
//前面的代码都是范式,在基础入门已经提过了 var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost:28001/test'); var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error')); db.once('open', function () { console.log('mongoose is open!') }); var personSchema = new Schema({ name:{ type:String, unique:true //这里指定了name的唯一性 }, }) var Schema = mongoose.Schema; var Person = mongoose.model('Person', personSchema); //这里引用了一个中间件,此中间件在save操作之前执行,所以关键字是pre //判断error, 这里指的的是重复保存数据的一个error //中间件的写法和express很像 //如果有error,那就会用next(err)传到下面 //这里还有一点注意的是这个中间件要写在创建Person类的下面,否则无用 personSchema.pre('save', function(err, doc, next){ if(err.name == 'MongoError' && err.code == 11000){ next(new Error('duplicated key error')) } else { next(err); } }); //这里用了create方法 Person.create([{name:'Tom'},{name:'Tom'}], function(err, doc){ if(err) console.log(err.message) console.log('saved'); console.log(doc) });
我们看到保存是成功的,但是只保存了一条document.
如果你再运行一次create操作,会看到控制台报错:
然后你再去看下mongoDB的客户端,里面还是一条数据,并没有重复记录。
相关文章推荐
- PHP快速入门教程:WHILE循环示例
- 高性能Web服务器Nginx的配置与部署研究(1)Nginx简介及入门示例
- mongoDB 入门指南、示例
- JQuery入门――用映射方式绑定不同事件应用示例
- java服务中间件之旅(一):dubbo入门
- ADO.NET Entity Framework 入门示例向导
- Spring MVC 入门示例
- cuda编程入门示例12
- 正则表达式快速入门(python示例)
- cuda编程入门示例17
- python 入门示例
- 【Asp.net入门3-01】使用jQuery-创建示例项目
- Spring(二)之入门示例
- VS2005中ReportViewer 本地模式下报表呈现 入门示例 (转)
- Spring MVC 入门示例讲解
- java线程入门示例
- MongoDB入门示例及介绍
- Android Volley入门到精通:使用Volley加载网络图片(示例,出错代码)
- mongoDB 入门指南、示例
- 传统tcp网络编程入门示例