【Nestjs学习日记】连接MongoDB

作者:markzzw 时间:2024-2-26

线上代码:CodeSandbox

Github:zhangzewei/nest-learning-tutorial
系列阅读 【Nestjs学习日记】专栏

在 NestJS 中,使用 MongoDB 作为数据库是很常见的场景之一。MongoDB 是一个流行的 NoSQL 数据库,具有灵活的数据模型和丰富的查询功能。NestJS 提供了一种简单且优雅的方式来连接和操作 MongoDB 数据库。

在本篇学习日记中,我们将探讨如何在 NestJS 中连接到 MongoDB 数据库,并执行基本的数据库操作,如插入、查询和更新数据。

准备工作

在开始之前,确保您已经安装了以下工具和依赖:

  • Node.js:确保您已经安装了 Node.js 运行时环境,并且可以在命令行中执行 nodenpm 命令。
  • NestJS CLI:通过运行 npm install -g @nestjs/cli 全局安装 NestJS CLI,以便创建和管理 NestJS 项目。
  • MongoDB:一般可以在本地安装一个MongoDB,这篇文章以学习为目的,所以将使用线上的Cloud MongoDB

首先安装 @nestjs/mongoose 包,它是 NestJS 的官方 MongoDB 连接库。您可以通过以下命令进行安装:

shell 复制代码
npm install --save @nestjs/mongoose mongoose

然后准备数据库,进入Cloud MongoDB,注册一个账号,然后根据引导,创建一个数据库,随后点击数据库中的 connect 按钮获取连接数据库的链接

其中 <password> 需要替换成设置的数据库密码,在 ? 前可以写上数据库名称。

perl 复制代码
mongodb+srv://${user}:${password}@cluster0.zxzpzz8.mongodb.net/${dbName}

连接 MongoDB 数据库

首先,我们需要在 NestJS 项目中创建一个模块来处理 MongoDB 的连接和配置。在命令行中切换到您的 NestJS 项目目录,并执行以下命令创建一个模块:

arduino 复制代码
nest generate module database

该命令将在 src 目录下创建一个名为 database 的模块,并生成相应的文件,使用 nest cli 创建的 Module 将会自动被引入 appModule。

接下来,我们需要在 database.module.ts 文件中配置 MongoDB 连接。请打开该文件,并根据以下示例进行编辑:

ts 复制代码
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';

const user = 'zzw';
const password = 'pass123';
const dbName = 'pets';

@Module({
    imports: [
        MongooseModule.forRoot(
            `mongodb+srv://${user}:${password}@cluster0.zxzpzz8.mongodb.net/${dbName}`
        ),
    ],
})
export class DatabaseModule { }

保存之后,重启项目会看到控制台打印出

ini 复制代码
[Nest] 36260  - 02/26/2024, 2:18:17 PM     LOG [InstanceLoader] MongooseModule dependencies initialized +11ms
[Nest] 36260  - 02/26/2024, 2:18:17 PM     LOG [InstanceLoader] DatabaseModule dependencies initialized +0ms

表示数据库连接已经成功。

相关推荐
2501_920931703 小时前
React Native鸿蒙跨平台采用ScrollView的horizontal属性实现横向滚动实现特色游戏轮播和分类导航
javascript·react native·react.js·游戏·ecmascript·harmonyos
0思必得05 小时前
[Web自动化] Selenium处理动态网页
前端·爬虫·python·selenium·自动化
东东5165 小时前
智能社区管理系统的设计与实现ssm+vue
前端·javascript·vue.js·毕业设计·毕设
catino5 小时前
图片、文件的预览
前端·javascript
2501_920931707 小时前
React Native鸿蒙跨平台实现推箱子游戏,完成玩家移动与箱子推动,当所有箱子都被推到目标位置时,玩家获胜
javascript·react native·react.js·游戏·ecmascript·harmonyos
layman05287 小时前
webpack5 css-loader:从基础到原理
前端·css·webpack
半桔7 小时前
【前端小站】CSS 样式美学:从基础语法到界面精筑的实战宝典
前端·css·html
AI老李7 小时前
PostCSS完全指南:功能/配置/插件/SourceMap/AST/插件开发/自定义语法
前端·javascript·postcss
_OP_CHEN8 小时前
【前端开发之CSS】(一)初识 CSS:网页化妆术的终极指南,新手也能轻松拿捏页面美化!
前端·css·html·网页开发·样式表·界面美化
啊哈一半醒8 小时前
CSS 主流布局
前端·css·css布局·标准流 浮动 定位·flex grid 响应式布局