Mongoose操作MongoDB数据库(1):项目创建与连接配置

大家好,我是WangHappy,一名主业前端,副业全栈的程序员,在这里我会分享关于前端进阶全栈的常用技术 和 基本入门操作。 如果我的文章能让您有所收获,欢迎一键三连(评论,点赞,关注)。


Mongoose介绍

Mongoose 是为Node.js设计的一个 MongoDB 的对象数据建模库。目的是为了服务端与 MongoDB 数据库进行交互时提供更简化的数据库操作接口。

使用 Mongoose 需要掌握的前置条件:

1.需要掌握的知识:Node.js、MongoDB、Express/koa框架。

2.确保电脑已安装Node.js,且版本在 Node16 以上。可以打开cmd终端,输入 node -v 来确认Node安装的版本。

3.确认已在本地或服务器启动MongoDB数据服务,可参考我之前的系列文章 Windows系统搭建MongoDB 来实现数据库的安装、配置、部署。

本专题我们将使用 Node.js + Express + Mongoose 来实现服务端的开发。

创建项目

新建一个文件夹,项目名称自定义(不要使用中文名称)。

打开终端,进入到项目文件夹,在根目录下执行 Node.js 初始化命令:

csharp 复制代码
npm init -y

项目目录下会自动生成一个 package.json 的文件。

swift 复制代码
{
  "name": "myproject",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

我们简单来了解几个比较重要的字段:

name:表示项目的名称。

version:项目的版本(默认是1.0.0)。

main:入口文件,默认是 index.js。

scripts:定义一些常用的命令。

安装主要依赖

完成初始化项目后,继续在终端安装项目所需的依赖,执行以下命令:

css 复制代码
npm i express cors dotenv nodemon

express:Node.js最流行的框架之一,用来处理服务端的路由,中间件,静态文件等服务。

cors: 解决跨域请求的问题。

dotenv:读取.env文件中的环境变量,.env文件通常配置数据库的IP地址,用户名,密码...等重要隐私信息。

nodemon:监控服务端代码变化并自动更新,避免每次修改服务端代码都需要重启服务的繁琐流程。

启动 Node.js 服务

相关依赖安装完成后,在项目根目录下分别创建 index.js 和 .env 文件

go 复制代码
📦myproject
 ┣ 📜.evn
 ┣ 📜index.js
 ┗ 📜package.json

index.js 作为服务端入口文件,与前文提到的 package.json 中的 main 入口文件相对应。代码如下:

javascript 复制代码
const express = require('express') // 引入express框架
const app = express() // 创建一个 express 应用实例
const cors = require('cors') // 引入 cors 中间件
require('dotenv').config() // 加载环境变量

app.use(cors()) // 启用 cors 中间件,允许跨域请求
app.use(express.urlencoded({ extended: true })) // 处理 application/x-www-form-urlencoded 请求体,解析表单数据

const PORT = process.env.PORT || 3000 // 配置访问端口号
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
}) // 监听服务,如果服务正常启动会打印该文字

.env 文件用来配置数据库端口、IP、账号、密码,配置如下:

ini 复制代码
# MongoDB 配置
MONGO_USERNAME=your_name # 数据库账号
MONGO_PASSWORD=your_password # 数据库密码
MONGO_HOST=192.168.0.0 # 数据库ip地址
MONGO_PORT=27017 # 端口号,MongoDB通常为27017
MONGO_DATABASE=test # 要访问的MongoDB 实例下的数据库 

# 服务器端口号配置
PORT=3000

注意:如果项目是使用 git 管理的,那在一定要在 .gitgnore 文件里将 .env 添加进去,避免将.env 文件上传到git仓库中,从而导致隐私信息泄露。

现在我们来启动Node服务,在 package.json 文件中找到 scripts,添加一条常用命令,代码如下:

json 复制代码
"scripts": {
   "start": "nodemon index.js"
 }

保存文件,然后在项目根目录下打开终端,执行 npm run start。

此时如果终端输出 Server is running on port 3000 代表 Node 服务已经成功启动。

使用Mongoose连接数据库

现在执行最后一步,使用 Mongoose 连接 MongoDB 数据库。

首先在项目里安装 Mongoose,在项目中打开终端执行 npm i mongoose。

安装完成后,在入口文件 index.js 中使用 Mongoose, 添加代码如下:

javascript 复制代码
const mongoose = require('mongoose') // 引入mongoose

// 从.env文件中获取环境变量构建 MongoDB 连接字符串
// process.env.MONGO_USERNAME:用户名
// process.env.MONGO_PASSWORD:密码
// process.env.MONGO_HOST:IP地址
// process.env.MONGO_PORT:端口号
// process.env.MONGO_DATABASE:要连接的数据库

const mongoURL = `mongodb://${process.env.MONGO_USERNAME}:${process.env.MONGO_PASSWORD}@${process.env.MONGO_HOST}:${process.env.MONGO_PORT}/${process.env.MONGO_DATABASE}`;

mongoose.connect(mongoURL, {
  authSource: 'admin' // 指定用户的数据库进行身份验证,默认情况下,认证数据库是 `admin`
})

// 连接数据库成功返回的信息
mongoose.connection.on('connected', () => {
  console.log('Connected to MongoDB')
})

// 连接失败返回错误信息
mongoose.connection.on('error', (err) => {
  console.log('MongoDB connection error: ' + err)
})

// 中断连接返回的提示
mongoose.connection.on('disconnected', () => {
  console.log('MongoDB disconnected')
})

代码添加完成后,在项目目录下执行 npm run start 重启服务。

终端如果打印 Connected to MongoDB,则代表连接数据库成功。


至此,我们已经完成了Node项目的创建,并成功的使用 Mongoose 连接上了数据库。

在下一章,我们将学习了解如何使用 Mongoose 定义数据模型并实现基本的增、删、改、查等操作。

如果我的文章能让您有所收获,欢迎一键三连(评论,点赞,关注),感谢!

相关推荐
u01110267519 分钟前
WebP 转成 PNG 后为什么更大?图片格式转换不等于压缩
前端·javascript·vue.js
万少20 分钟前
Qoder sonus模型 20分钟,复刻 马斯克 飞天汽车
前端·后端·算法
java1234_小锋42 分钟前
【技术专题】HTML5 网页技术 - HTML5 列表标签
前端·html·html5
强二小哥帅44 分钟前
Kotlin 协程复习笔记
前端
不可能片场1 小时前
工程实践 原子替换改了 ctime 怎么修
前端·electron
暧暧内含光1 小时前
HTTP 文件传输体系全解:从协议标头、OSS 架构到流媒体分片
前端
静默回滚1 小时前
浏览器能显示AVIF,却导不出一张AVIF
前端
达梦数据1 小时前
DMDDB如何兼容 MongoDB
数据库·mongodb
小皮虾1 小时前
小程序全局状态还能这么简单?只需初始化一次,页面自动同步
前端·javascript·微信小程序
用户818618028001 小时前
RESTful API 设计规范与版本演进
前端