mongo 进阶之—— mongoose 认识
Posted twinkle||cll
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mongo 进阶之—— mongoose 认识相关的知识,希望对你有一定的参考价值。
在上两篇文章中,mongo 进阶之——聚合管道, mongo 的安装与基本的认识, 中介绍了mongo的基本用法,但是我们在node环境中直接使用原生的,还是没有很方便。
使用mongo
不管是哪种代码的环境,如果需要连接数据库,都需要使用数据库的驱动。(以下代码的环境是node为例)。在node环境中,mongodb的驱动就叫做
mongodb
,但是这个驱动也有一个缺陷,模型的验证做的不是很好,一般我们都会使用mongoose
这个库来自定模型,验证参数
等
mongoose官网:mongoosejs.com/
mongoose民间中文网:www.mongoosejs.net/
mongoose
mongoose
在node环境中类似于连接mysql
的se’sequelize` 都是用于定义模型,校验规则是否满足条件,然后在把模型映射到对应的数据库中。
mongoose 与 mongodb的关系
mongoose
自己有一套风格和api
mongoose
内部的还是使用mongodb
的官方驱动,去操作mongo数据库的。mongoose
的schema
: 结构,描述某种数据中有哪些字段、每个字段是什么类型、每个字段的约束等
使用方式
既然是一个驱动,那肯定是需要安装的,安装的方式也是很简单,如:
npm install mongoose
oryarn add mongoose
等
环境要求
安装好驱动后,你需要保证你本地是有已经启动mongo服务的。检测方式如下: win + r
—> 输入 services.msc
这个服务需要启动着,才能使用mongoose
来连接,并且操作数据库。
连接数据库
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test1');
var db = mongoose.connection;
db.on('error', function()
console.log('连接失败,请查看mongo服务是否启动')
);
db.on('open', function()
console.log('能够正常访问数据库')
);
复制代码
如果你的服务没有启动,那么你会得到下面的结果:
正常的结果是这样的:
通过上面的代码,大家和我可能都会有一个问题,为啥mongoose中连接数据库,不需要用户名和密码呢?数据库我们知道是动态创建的,但是用户名和密码是怎么一回事呢?带着问题往下看:
我带着这个问题去百度了下,加上自己对这方面的理解,得出了下面结论。 mongo 本身的数据库都是动态的,人家根本就不知道你连接的是哪台数据库,自然在权限方面肯定就是空的,怎么体现呢?如下:
在robot 3t 上可以看到权限中的用户名和密码都是空的呢,只要你启动了服务,那么你就可以任意的创建数据库,任意的操作数据。这个是不是有点尴尬呀!所以在正式的开发中,一定切记需要做好数据权限问题,不然每个人都可以操作数据库,这是一件很危险的事情。
以上是关于mongo 进阶之—— mongoose 认识的主要内容,如果未能解决你的问题,请参考以下文章