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'
98 0
|
网络协议 IDE Linux
mongoose使用详细 -- 如何通过mongoose搭建服务器
mongoose使用详细 -- 如何通过mongoose搭建服务器
1049 0
|
6月前
|
JavaScript 关系型数据库 API
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
这篇文章介绍了什么是Prisma以及如何在Node.js和TypeScript后端应用中使用它。Prisma是一个开源的下一代ORM,包含PrismaClient、PrismaMigrate、PrismaStudio等部分。文章详细叙述了安装PrismaCLI和依赖包、初始化Prisma、连接数据库、定义Prisma模型、创建Prisma模块的过程,并对比了Prisma和Sequelize在Nest.js中的使用体验,认为Prisma更加便捷高效,没有繁琐的配置。
228 7
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
|
7月前
|
JavaScript NoSQL 数据库连接
使用Nodejs + express连接数据库mongoose
【6月更文挑战第3天】这篇文章介绍了如何在Express应用中使用Mongoose连接MongoDB数据库。首先,需要创建一个`db.js`文件,然后通过`npm install mongoose`安装Mongoose驱动。接着,在应用中引入MongoDB模块,建立到数据库的连接。创建一个Mongoose schema定义数据模型,如用户信息表。最后,执行数据库操作,包括查询、插入、更新和删除文档,并在完成后关闭数据库连接。文中还提供了相关代码示例。
207 1
|
存储 JSON NoSQL
【mongo 系列】mongodb 学习二,mongodb 的基本使用梳理
• 文档 是 mongodb 的最小数据集单位,是多个键值对有序租户在一起的数据单元,类似于关系型数据库的记录
270 4
|
存储 NoSQL JavaScript
|
存储 设计模式 JavaScript
快速入门nest.js(5/10)--数据库之一PostgreSQL
这时,它就会创建一个PostgreSQL数据库 此时我们就可以毫不费力的运行一个数据库环境docker-compose up db -d,-d代表分离模式运行我们的容器,-db代表只运行db中配置的环境,如果不传该参,将是整个yaml文件。
285 0
|
存储 NoSQL JavaScript
Nodejs下使用MongoDB
nodejs作为一门非常火爆的技术栈,可以做很多事情,那么nodejs和MongoDB碰撞在一起又会产生怎么样的火花呢?接下来我们就来了解一下,在Nodejs下使用MongoDB。
|
前端开发 JavaScript NoSQL
mongo 进阶之—— mongoose 基本操作
有的人说,怎么老是成功的,应该需要些失败来看看mongoose的作用,那么咋们就来看看这个失败是怎么处理的
mongo 进阶之—— mongoose 基本操作
|
SQL 机器学习/深度学习 JavaScript
node.js 学习入门(08 - MySQL 数据库)
node.js 学习入门(08 - MySQL 数据库)
node.js 学习入门(08 - MySQL 数据库)