Mongoose中间件入门示例

1 篇文章 0 订阅
1 篇文章 0 订阅

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的客户端,里面还是一条数据,并没有重复记录。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mongoose是一个在Node.js中操作MongoDB数据库的对象模型工具。它提供了一种简单而优雅的方式来定义和操作MongoDB中的文档。 Mongoose官方文档提供了详细的指南和API参考,帮助开发者了解和使用Mongoose。以下是Mongoose官方文档的主要内容: 1. 安装和配置:介绍了如何安装Mongoose以及配置连接MongoDB数据库的方法。 2. 模型定义:讲解了如何使用Mongoose定义模型,包括定义模式(Schema)和模型(Model)。 3. CRUD操作:介绍了如何使用Mongoose进行增删改查操作,包括创建文档、查询文档、更新文档和删除文档。 4. 查询和过滤:详细介绍了Mongoose中的查询方法和过滤器,包括条件查询、排序、分页等。 5. 中间件:讲解了Mongoose中的中间件概念和使用方法,包括前置中间件、后置中间件和错误处理中间件。 6. 钩子函数:介绍了Mongoose中的钩子函数,可以在保存、更新等操作前后执行一些逻辑。 7. 数据验证:讲解了如何使用Mongoose进行数据验证,包括内置验证器和自定义验证器。 8. 引用和关联:详细介绍了Mongoose中的引用和关联概念,可以在不同集合之间建立关系。 9. 聚合查询:介绍了Mongoose中的聚合查询功能,可以进行复杂的数据聚合操作。 10. 插件:讲解了如何使用Mongoose插件扩展功能,以及一些常用的插件示例。 以上是Mongoose官方文档的主要内容,你可以通过访问Mongoose官方网站来获取更详细的信息和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值