您的位置:首页 > 编程语言 > Go语言

Mongoose中间件入门示例

2017-10-07 22:06 302 查看
Mongoose的中间件功能很强大,可以把复杂的异步程序,诸如各种数据验证的方法,拆分后按照同步顺序执行,这里就举一个简单的中间件用法

//前面的代码都是范式,在基础入门已经提过了
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的客户端,里面还是一条数据,并没有重复记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息