连接到 MongoDB 数据库
刚发布了新课程《Node.js 与 MongoDB》,介绍了使用 Node.js 控制 MongoDB 数据库的方法。写入,读取,更新,还有删除数据。在本地安装一个 MongoDB,跟着 MongoDB 的课程练习一下,先了解一下 MongoDB 本身提供的方法去处理数据库里数据。
让 Node.js 与 MongoDB 结合到一块儿,需要一套方法,MongoDB 官方提供了一套方法叫:node mongodb native。课程里我用的是 Mongoose,这个 Mongoose 有点像是 Laravel 里的 Eloquent, 或者 Rails 框架里的 Active Record,可以到宁皓网上找一下这两个框架的课程,先去了解一下,会有帮助。
安装 MongoDB
在专门介绍 MongoDB 的时候,我在本地用 Docker 创建了一个 MongoDB 容器。如果你还不习惯用 Docker ,可以直接在本地安装 MongoDB 数据库,使用系统的包管理工具去安装一个 MongoDB。Windows 上用 Chocolatey,macOS 用 Homebrew。
macOS:Homebrew
brew install mongodb
Windows:Chocolatey
choco install mongodb
完成以后应该需要创建一个数据库目录(Windows 省略 sudo):
sudo mkdir /data/db
macOS 上得修改一下这个目录的拥有者(Windows 可省略这一步):
sudo chown -R wanghao /data/db
然后执行 mongod ,可以启动 MongoDB 数据库管理系统。
mongod
MongoDB 图形化界面
Robo 3t 提供了一个图形化界面,可以管理 MongoDB 数据库。你可以查看与管理数据库,集合,还有文档。用系统包管理工具可以安装这个软件。
macOS:Homebrew
brew install caskroom/cask/robo-3t
Windows:Chocolatey
choco install robo3t
Mongoose
启动 MongoDB 以后,在 Node.js 项目里安装一下 Mongoose 这个 Package 以后,就可以使用它去控制 MongoDB 数据库了。
安装 Mongoose:
yarn add mongoose
在项目里导入 Mongoose:
const mongoose = require('mongoose')
配置 Mongoose 使用 Promise:
mongoose.Promise = global.Promise
创建与连接到指定的数据库:
const uri = 'mongodb://localhost:27017/ravent' const options = { useMongoClient: true, } mongoose.Promise = global.Promise mongoose .connect(uri, options) .then(db => console.log('😄 连接数据库成功')) .catch(error => console.log('😿 连接数据库失败'))
现在,我们就可以使用 Mongoose 里的方法去处理数据库了。
Node.js
评论
皓皓 是否考虑出一个设计模式的系列
7 年 4 个月 以前
你花些时间研究一下,写一写,然后你再录成视频 :) 加油 ~ 每天都要学习哦,少聊一点。
7 年 4 个月 以前
擦!皓皓是啥鬼 输入法!!!!
7 年 4 个月 以前
我用五笔。
7 年 4 个月 以前
突然看到五笔输入,不禁要感慨下,记得小学我妈用五笔,就让我也学习这个,结果后来,我拼音比她五笔敲得快(估计是因为她敲键盘速度而不是输入法本身的缺陷)。
6 年 10 个月 以前
哈哈,我的五笔还是在山木学的。
6 年 9 个月 以前
记得要写学习笔记啊。有博客了吗?你用 gitbook 也可以,必须得分享你的学习成果。
7 年 4 个月 以前
gitbook是王皓老师写电子书那个吗
7 年 4 个月 以前
是的,用什么都行。你得及时分享出你都做了什么,还有想法。
7 年 4 个月 以前
嗯嗯 好的 !
7 年 4 个月 以前
最近在跟着学习mongodb这个部分,但是mongoose最近提示说5.x以上版本,mongoose.connect(uri, options) 不需要options了。但是我遇到一个问题,也是连不上服务器,我是把mongodb放在docker container里面,并且mongodb在运行中,可是mongoose说'MongoNetworkError',具体error是:MongoError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
我网上查询很多,都说是我的mongoDB没有启动,可是我真的启动了
MongoDB shell version v3.6.2
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.2
难道是因为在container里面,所以有别的一些config但是我没有设定?求问。谢啦 皓哥。
6 年 10 个月 以前
Update: 用docker需要match下port number
6 年 9 个月 以前
:)
6 年 9 个月 以前
皓哥你好:如果对于这节课不用本地的mongoDB, 用docker的应该怎么做?因为之前的一门课是用docker运行mongoDB, 因此我打算接着上门课的方法使用mongoDB。 谢谢了
4 年 7 个月 以前
你可以创建运行一个 MongoDB 容器,设置一下这个容器的端口映射就可以了,就是用一个本地上的端口映射到容器里运行 MongoDB 服务用的端口。
4 年 7 个月 以前
谢谢皓哥!弱弱的问一下,您能简单的说一下这个应该怎么操作吗?或者参考某个文件也行。谢谢了🙏
4 年 7 个月 以前
可以用 docker 命令直接基于一个镜像运行一个容器,比如用 mongo 这个镜像创建一个容器。运行的时候用 -p 选项设置公开的端口,比如 -p 27017:27017,意思就是让本地的 27017 这个端口对应容器里的 27017 这个端口。这样你在本地运行的项目就可以通过 27017 这个端口连接到在容器里运行的 mongo 服务了。https://hub.docker.com/_/mongo
4 年 7 个月 以前
非常感谢皓哥!还有麻烦问一下,您做的那个小白兔系列还有后续课程吗?
4 年 7 个月 以前
还有一些 :)
4 年 7 个月 以前