3_mongoose ODM框架及其安装
mongoDB和mongoose
我们可以将mongoDB想象成原始炼铁的一系列过程,将铁矿破碎、磨粉、烧结,这个过程都是人工操作的,极其繁琐,效率低下。所以对mongoDB进行封装,引入mongoose。
mongoose可以想象成自动化流水线炼铁作业,大幅度提高操作的速度以及降低错误的可能。
mongoose是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易。
mongodb 增删盖查数据库很自由,插入数据时传入json 数据就可以了,而没有对json格式进行约束,无法保证存在数据库里的数据都是同样的格式。
所以mongoose为mongodb提供了一种直接的,基于scheme结构去定义你的数据模型。它内置数据验证,查询构建,业务逻辑钩子等,开箱即用。
总的来说,建议使用mongoose对数据进行约束,相当于用ts改善js一样,让我们可以清晰地知道最后的数据类型。
mongoose构建在mongodb之上,提供了Schema、Model和Document对象,用起来更为方便。
我们可以用Schema对象定义文档的结构(类似表结构),可以定义字段和类型、唯一性、索引和验证。Model对象表示集合中的所有文档。Document对象作为集合中的单个文档的表示。mongoose还有Query和Aggregate对象,Query实现查询,Aggregate实现聚合。
一般来说,服务器都不会直接操作数据库,而是通过相应的模型对象对数据/文档进行映射,再进行操作。
因为服务器与数据库之间的连接很慢,首先要进行地址,端口,账号,密码和数据类型的校验,连接完成之后数据库要从磁盘上读取数据进行查询或者存储。
而所谓的ODM对象文档模型框架就是
- 1.预先定义好了类型约束规则,省去了校验的步骤,
- 2.将磁盘上的数据库数据预加载到了内存,省去了大量的加载时间
mongoDB是非关系型数据库,数据以键值对的形式存在(数据的组织形式不统一),每一个数据文档可以有不一样的字段,可以根据需要增加一些自己的键值对,而mongoDB作为一个数据库,它没有对服务器的crud指令进行快速分析的能力,或者说分析指令能力较弱。虽然mongoDB提供给node.js一些API进行数据库访问,但因为操作慢并且繁琐,这个时候需要一个媒介----mongoose。当mongoose接到服务器的crud指令,负责将已从磁盘上加载到内存的一条条数据映射成内存对象,让服务器进行操作。
新建一个项目文件夹,使用控制台命令 cd 切换到该文件夹(或者直接复制路径到控制台),并在该文件夹内使用npm install mongoose命令下载 mongoose
默认情况下,mongoDB是启动状态的,但如果链接数据库失败,可在命令行工具中运行net start mongoDB即可启动MongoDB,否则MongoDB将无法连接。