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 定义数据模型并实现基本的增、删、改、查等操作。

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

相关推荐
狗头大军之江苏分军9 分钟前
年底科技大考:2025 中国前端工程师的 AI 辅助工具实战盘点
java·前端·后端
编程修仙1 小时前
第三篇 Vue路由
前端·javascript·vue.js
比老马还六1 小时前
Bipes项目二次开发/硬件编程-设备连接(七)
前端·javascript
掘金一周1 小时前
前端一行代码生成数千页PDF,dompdf.js新增分页功能| 掘金一周 12.25
前端·javascript·后端
张就是我1065921 小时前
漏洞复现指南:利用 phpinfo() 绕过 HttpOnly Cookie 保护
前端
Kagol1 小时前
🎉TinyVue v3.27.0 正式发布:增加 Space 新组件,ColorPicker 组件支持线性渐变
前端·vue.js·typescript
潍坊老登1 小时前
大前端框架汇总/产品交互参考UE
前端
方安乐2 小时前
获取URL参数如何避免XSS攻击
前端·xss
十二AI编程2 小时前
MiniMax M2.1 实测,多语言编程能力表现出色!
前端