Node.js项目实战-构建可扩展的Web应用(第一版): 7 使用ORM类库Mongoose提升你的Node.js数据

   Mongoose是一个基于Node.js和MongoDB的高级ORM类库,是现代软件工程至关重要的一部分。

   它能从数据库中提取出任何信息,且应用程序代码只通过对象以及它们的方法进行交互。ORM允许指定不同类型对象之间的关系,也允许将业务逻辑(与这些对象相关的)放入类中。另外,它拥有内置的验证和类型转换功能,而且可以根据需要扩展和定制。当与Express.js共用的时候,Mongoose使栈真正附着在MVC概念中。

7.1 安装Mongoose

  $ npm install mongoose

7.2 用独立的Mongoose脚本创建数据库连接

   连接服务器:mongoose.connect('mongodb://localhost/test');

   创建模型:model()函数

   var Book = mongoose.model('Book', { name: String });

   var practicalNodeBook = new Book( { name: "Practical Node.js' });

   文档对象:有内置方法,如validate, isNiew, update等

   mongoose.js

var mongoose = require('mongoose');
mongoose.connect('mongoose://localhost/test');
var Book = mongoose.model('Book', { name: String });
var practicalNodeBook = new Book( { name: "Practical Node.js" });
practicalNodeBook.save(function (err, results) {
  if (err) {
  	console.error(e);
  	process.exit(1);
  } else {
  	console.log('Saved: ', results);
  	process.exit(0);
  }
});

7.3 Mongoose的原型

   原型是一个JSON格式的类。使用之前先定义book原型

7.4 使用钩子(Hook)保存代码的逻辑清晰

   在复杂的、拥有很多相互关联对象的应用中,可能会在保存一个对象之前想执行某些特定的逻辑。Hooks正是存储这些逻辑的好地方。如保存book文档前上传一个PDF:

   bookSchema.pre('save', function(next) {   //上传PDF return next(); });

7.5 自定义静态和实例方法

     bookSchema.method( { buy: function() { } } };

7.6 Mongoose的模型

    模型都是最基础的对象。将原型编译为一个模型,使用mongoose.model(name, schema)即可

7.7 使用population建立关系和连接

    MongoDB中是不存储关系数据的,但可以在应用层进行存储。

7.8 嵌套的文档

    一个单独的集合(users)代替两个集合(posts和users),每一项都包含posts.    

7.9 虚拟字段

    用虚拟字段创建聚合字段是很不错的选择,如有姓和名字段不需要存储全名的值。

7.10 修改原型的行为

   

7.11 Express.js + Mongoose = 真正的MVC

   P164


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值