第7章-使用ORM类库Mongoose提升你的Node.js数据-7.1.Mongoose的安装

Mongoose是一个基于Node.js和MongoDB的高级ORM类库。
使用ORM有很多优势,不只是利于组织代码或易于开发这么简单。
典型的ORM是现代软件工程至关重要的一部分。

Mongoose能从数据库中提取出任何信息,且应用程序代码只能通过对象以及他们的方法进行交互。
ORM允许指定不同类型对象之间的关系,也允许将业务逻辑(与这些对象相关的)放入类中。

另外,Mongoose拥有内置的验证和类型转换功能,而且可以根据需要进行扩展和定制。
当与Express.js共用的时候,Mongoose使栈真正附着在MVC概念中。

Mongoose使用了和Mongo命令行、原生MongoDB的驱动以及与Mongoskin相似的接口。
正因为如此,主要的函数如find、update、insert、save、remove等,外观和功能都是相同的,这一点让我们能更快入门Mongoose。

一、安装Mongoose

首先,我们要用NPM安装Mongoose。安装方法有很多,下面是直接将Mongoose 3.8.4安装到空文件夹中的方法:

$mkdir node_modules
$npm install mongoose@3.8.4

二、用独立的Mongoose脚本建立数据库连接

我们可以把Mongoose当作独立的MongoDB库来使用。
为了实现这个目的,我们可以使用一个简单的脚本建立连接,定义一个Mongoose模型,实例化一个名为practicalNodeBook的对象,然后将他存入数据库。

在使用Mongoose库之前,我们需要在项目中引入mongoose模块:

var mongoose = require('mongoose');

不像Node.js原生的MongoDB驱动还需要我们写许多行的代码,Mongoose只用一行代码就能连接到数据库服务器:
mongoose.connect(uri(s), [options], [callback])。Mongoose的请求是异步的,所以我们无须等待连接建立完成(而原生驱动则通常需要回调来实现)。唯一需要的参数是URI或者遵循标准格式的字符串://username:password@host:port/database_name

在这个简单的例子中,主机名是localhost,端口默认是27017,数据库名为test:
1、建立数据库连接:mongoose('mongodb://localhost/test');

对于一些更加复杂的场景,还可以传入配置参数对象和回调函数。配置参数支持MongoDB原生驱动的所有属性。

注:在Node.js和Mongoose应用中的常见做法是,当程序开始执行时就打开一个数据库连接,并且保持连接直到程序终止。
对于网络应用程序以及服务器同样如此。

相比Mongoskin以及其他轻量级的MongoDB类库,Mongoose有一个明显的区别,就是使用model()函数并传入一个字符串和一个原型(后面会有原型的详细介绍)来创建一个模型。这个模型变量名的首字母一般大写:
2、创建一个模型对象:var Book = mongoose.model('Book', {name: String});

现在配置阶段的工作已经结束,我们可以实例化Book文档对象了:
3、实例化一个文档对象:var practicalNodeBook = new Book({name: 'Practical Node.js'});

Mongoose文档对象拥有非常方便的内置方法,比如:validate、isNew、update等。
但要记住,这些方法只适用于这个文档对象本身,并不适合用于整个集合或模型;
文档对象和模型的区别是,文档对象是模型的一个实例;
模型通常是抽象的,就像真正的MongoDB集合,它由原型、额外的方法和属性组成,并呈现为一个Node.js的类。
Mongoose中的集合很像Mongoskin或者原生驱动中的集合,严格来讲,模型、集合以及文档是不同的Mongoose类。

通常我们不会直接使用Mongoose的集合,只会使用模型对数据进行操作。
其中一些主要的方法看起来非常像Mongoskin或原生驱动中的方法,比如find、insert、save

让我们使用文档的方法—-document.save(),来完成脚本,将刚刚的Book文档写入数据库:

practicalNodeBook.save(function (err, results){
    if(err){
        console.error(e);
        process.exit(1);
    }else{
        console.log('Saved: ', results);
        process.exit(0);
    }
});

mongoose.js文件的全部代码如下:

var mongoose = require('mongoose');
mongoose.connect('mongodb://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);
    }
});

执行结果如图:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值