mongo 进阶之—— mongoose 认识

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 不管是哪种代码的环境,如果需要连接数据库,都需要使用数据库的驱动。(以下代码的环境是node为例)。在node环境中,mongodb的驱动就叫做mongodb,但是这个驱动也有一个缺陷,模型的验证做的不是很好,一般我们都会使用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的关系


36aef942b6f7933902b45b65096d87f9.png


  • mongoose 自己有一套风格和api
  • mongoose内部的还是使用mongodb的官方驱动,去操作mongo数据库的。
  • mongoose 的schema: 结构,描述某种数据中有哪些字段、每个字段是什么类型、每个字段的约束等


使用方式


既然是一个驱动,那肯定是需要安装的,安装的方式也是很简单,如: npm install mongoose or yarn add mongoose等


环境要求


安装好驱动后,你需要保证你本地是有已经启动mongo服务的。检测方式如下: win + r —> 输入 services.msc


37251a003429203fadb4f9cb77c84b53.png


这个服务需要启动着,才能使用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('能够正常访问数据库')
});
复制代码


如果你的服务没有启动,那么你会得到下面的结果:


ec40d828a54b99403662b17a437ae764.png


634f8dfb01d5ace8ffe5015d667ea626.png


正常的结果是这样的:


91916e1082b0a3a07168fd312dc8a82d.png

8d67aaf9016f6d3869da2b1aaf84475b.png


通过上面的代码,大家和我可能都会有一个问题,为啥mongoose中连接数据库,不需要用户名和密码呢?数据库我们知道是动态创建的,但是用户名和密码是怎么一回事呢?带着问题往下看:


我带着这个问题去百度了下,加上自己对这方面的理解,得出了下面结论。 mongo 本身的数据库都是动态的,人家根本就不知道你连接的是哪台数据库,自然在权限方面肯定就是空的,怎么体现呢?如下:


01b26b97907755acd121e49705c60103.png


在robot 3t 上可以看到权限中的用户名和密码都是空的呢,只要你启动了服务,那么你就可以任意的创建数据库,任意的操作数据。这个是不是有点尴尬呀!所以在正式的开发中,一定切记需要做好数据权限问题,不然每个人都可以操作数据库,这是一件很危险的事情。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
NoSQL MongoDB
mongodb踩坑-Error: Cannot find module 'mongoose'
mongodb踩坑-Error: Cannot find module 'mongoose'
94 0
|
NoSQL MongoDB 数据库
Mongodb的基本使用
Mongodb的基本使用
196 0
|
6月前
|
JavaScript NoSQL 数据库连接
使用Nodejs + express连接数据库mongoose
【6月更文挑战第3天】这篇文章介绍了如何在Express应用中使用Mongoose连接MongoDB数据库。首先,需要创建一个`db.js`文件,然后通过`npm install mongoose`安装Mongoose驱动。接着,在应用中引入MongoDB模块,建立到数据库的连接。创建一个Mongoose schema定义数据模型,如用户信息表。最后,执行数据库操作,包括查询、插入、更新和删除文档,并在完成后关闭数据库连接。文中还提供了相关代码示例。
202 1
|
存储 NoSQL MongoDB
【mongo 系列】mongodb 学习七,索引实操练习
向 mydoc 集合中,插入多条数据,mydoc 之前是没有存在过的,我们直接使用 db.mydoc.insertMany() ,mongodb 会默认给我们新建这个集合
133 0
|
存储 JSON NoSQL
【mongo 系列】mongodb 学习二,mongodb 的基本使用梳理
• 文档 是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录
259 4
|
存储 JSON NoSQL
【BackEnd--Mongodb】学习笔记(完整详细版)
MongoDB是一种面向文档的非关系型数据库,所谓的面向文档是一种类似JSON的结构,因此可以简单理解MongoDB存储的是各种各样的JSONMongoDB可以快速开发web型应用,因为存储的是JSON格式,因此无需像关系型数据库那样需要建表,非常的的灵活。
266 0
|
前端开发 JavaScript NoSQL
mongo 进阶之—— mongoose 基本操作
有的人说,怎么老是成功的,应该需要些失败来看看mongoose的作用,那么咋们就来看看这个失败是怎么处理的
mongo 进阶之—— mongoose 基本操作
|
NoSQL API MongoDB
一文学会mongoose如何对mongoDB进行增删改查
参考文献 官网 官方指南 官方 API 文档
97 0
|
NoSQL 关系型数据库 MySQL
在laravel中使用mongoDB
1、在保证当前环境已安装好mongodb扩展的前提下,在项目vendor目录同级,使用composer安装库 composer require jenssegers/mongodb ^3.6 -vvv 2、注册服务,在config\app.php文件里的providers数组末尾追加一行配置 Jenssegers\Mongodb\MongodbServiceProvider::class 3、注册facede,在config\app.php文件里的aliases数组末尾追加一行配置 'Mongo' => Jenssegers\Mongodb\MongodbServiceProvider::cl
|
NoSQL MongoDB 数据库
MongoDB的简单使用
MongoDB的简单使用
210 0