- 创建项目
- Nest 控制器
- nest 配置路由请求数据
- Nest 服务
- Nest 模块
- 配置静态资源
- 配置模板引擎
- Cookie 的使用
- Session 的使用
- 跨域,前缀路径、网站安全、请求限速
- 管道、守卫、拦截器、过滤器、中间件
- 一例看懂中间件、守卫、管道、异常过滤器、拦截器
- 数据验证
- 配置抽离
- 环境配置
- 文件上传与下载
- 实现图片随机验证码
- 邮件服务
- nest 基于 possport + jwt 做登陆验证
- 对数据库的密码加密:md5 和 bcryptjs
- 角色权限
- 定时任务
- 接入 Swagger 接口文档
- nest 连接 Mongodb
- typeORM 操作 Mysql 数据库
- nest 统一处理数据库操作的查询结果
- 数据库实体设计与操作
- typeorm 增删改查操作
- typeorm 使用事务的 3 种方式
- typeorm 一对一关系设计与增删改查
- typeorm 一对多和多对一关系设计与增删改查
- typeorm 多对多关系设计与增删改查
- nest 连接 Redis
- 集成 redis 实现单点登录
- Q:nestJS 注入其他依赖时为什么还需要导入其 module
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
nest 连接 Mongodb
mac 中,直接使用 brew install mongodb-community
安装 MongoDB,然后启动服务 brew services start mongodb-community
查看服务已经启动 ps aux | grep mongo
Nestjs 中操作 Mongodb 数据库可以使用 Nodejs 封装的 DB 库,也可以使用 Mongoose。
// https://docs.nestjs.com/techniques/mongodb npm install --save @nestjs/mongoose mongoose npm install --save-dev @types/mongoose
在 app.module.ts 中配置数据库连接
// app.module.ts import { ConfigModule, ConfigService } from 'nestjs-config'; import { MongooseModule } from '@nestjs/mongoose'; import { MongodbModule } from '../examples/mongodb/mongodb.module'; @Module({ imports: [ // 加载配置文件目录 ConfigModule.load(resolve(__dirname, 'config', '**/!(*.d).{ts,js}')), // mongodb MongooseModule.forRootAsync({ useFactory: async (configService: ConfigService) => configService.get('mongodb'), inject: [ConfigService], }), MongodbModule, ], controllers: [], providers: [], }) export class AppModule implements NestModule {}
// mongodb 配置 // src/config/mongodb.ts export default { uri: 'mongodb://localhost:27017/nest', // 指定 nest 数据库 };
配置 Schema
// article.schema import * as mongoose from 'mongoose'; export const ArticleSchema = new mongoose.Schema({ title: String, content:String, author: String, status: Number, });
在控制器对应的 Module 中配置 Model
// mongodb.module.ts import { Module } from '@nestjs/common'; import { MongodbService } from './mongodb.service'; import { MongodbController } from './mongodb.controller'; import { ArticleSchema } from './schemas/article.schema'; import { MongooseModule } from '@nestjs/mongoose'; @Module({ imports: [ MongooseModule.forFeature([ { name: 'Article', // schema 名称对应 schema: ArticleSchema, // 引入的 schema collection: 'article', // 数据库名称 }, ]), ], controllers: [MongodbController], providers: [MongodbService], }) export class MongodbModule {}
在服务里面使用 @InjectModel 获取数据库 Model 实现操作数据库
// mongodb.service.ts import { Injectable } from '@nestjs/common'; import { InjectModel } from '@nestjs/mongoose'; @Injectable() export class MongodbService { // 注入模型 constructor(@InjectModel('Article') private readonly articleModel) {} async findAll() { return await this.articleModel.find().exec(); } async findById(id) { return await this.articleModel.findById(id); } async create(body) { return await this.articleModel.create(body); } async update(body) { const { id, ...params } = body; return await this.articleModel.findByIdAndUpdate(id, params); } async delete(id) { return await this.articleModel.findByIdAndDelete(id); } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论