NestJs使用Mongoose对MongoDB操作的方法


Posted in Javascript onFebruary 22, 2021

最近开始学习NestJs这个框架。学习成本比其他框架相对高了很多。
其注册配置相对复杂一开始学起来有点摸不着哪跟哪;但这也是相比其他框架更规范严谨的体现。保证了大型项目的稳定健壮的使用!

在学习node基础框架Express和Koa的时候。对数据库的操作一直都是以编写SQL语句实现。需要什么编写什么。这样显得非常死板也不灵活。后来了解到NestJs是OOP思想编程(NestJs可以使用TypeScript也是OOP思想)才知道原来对数据库的操作可以用对象形式体现。在数据库中每一个表(Schema)都可以看作Nest框架中的一个对象。这样在对数据库操作就显得非常灵活

例如:(这是随便一个表的结构)

NestJs使用Mongoose对MongoDB操作的方法

它可以看做成NestJs中的一个对象

NestJs使用Mongoose对MongoDB操作的方法

这样一来对数据库中每个表的操作就显得非常简单了。
这里我们拿链接mongoDB操作来举例

根据官方文档使用mongoose

首先是安装所需依赖

npm install --save @nestjs/mongoose mongoose

可以加个淘宝镜像:

?registry=https://registry.npm.taobao.org

这个已经打的很熟练了用起来很方便。下载速度会相对快很多

安装完成后我们到app.module.ts中添加配置

app.module.ts

NestJs使用Mongoose对MongoDB操作的方法

在imports:[]中添加相应配置

MongooseModule.forRoot(‘mongodb://localhost/test')
//后面是MongoDB的位置(根据需要而定)
对应添加相应依赖
import { Module } from ‘@nestjs/common';
import { MongooseModule } from ‘@nestjs/mongoose';

这个时候保存后在控制台就可以看到
DeprecationWarning: current URL string parser is deprecated, and will be removed in a future version. To use the new parser, pass option { useNewUrlParser: true } to MongoClient.connect
这么类似的一句话。就说明链接成功了

接着对模型注入(Schema)
在你相应的模块文件夹里创建schema文件夹。创建xx.schema.ts

例如我的是users/schemas/users.schema.ts

import * as mongoose from 'mongoose'

export const UserSchema = new mongoose.Schema(
  {
    id: Number,
    name: String,
    introduction: String,
    headurl: String,
    bigurl: String,
    username: String,
    password: String,
  },
  { collection: 'musicers', versionKey: false },
)

对应的是上图的表结构(collection:可以看作MongoDB中的一个表。)
接下来在相对应的users.module.ts模块进行配置添加

import { Module } from '@nestjs/common';
import { MongooseModule, getModelToken } from '@nestjs/mongoose';
import { UsersController } from './users.controller';
import { UsersService } from './services/users.service';
import { UserSchema } from './schemas/users.schemas';

@Module({
  imports: [
  //这里添加配置。对应引入模块(注意里面的括号结构别给坑了。这里我卡了半天)
    MongooseModule.forFeature([
      { name: 'User', schema: UserSchema }
    ])
  ],
  controllers: [UsersController],
  providers: [
    UsersService,
   ],
})
export class UsersModule {}

这么配置好后。我们就可以在service端操作了

service端 => users/users.service.ts

咋们就拿一个查找来测试

import { Model } from 'mongoose';
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { User } from '../interface/users.interface';
import { IUserService } from '../interface/user-service.interface';


@Injectable()
export class UsersService implements IUserService {

  constructor(@InjectModel('User') private readonly userModel: Model<User>) {}
  
  private static users:User[] = [ ]

  async findAll():Promise<User[]>{
    //return UsersService.users
    return await this.userModel.find({})
    //( 这里我们测试查找全部 )
  }

}

controller端 => users/users.controller.ts

@Controller('users')
export class UsersController {
  constructor(private readonly userservice: UsersService) { }

@Get('getall')
  // @UseGuards(AuthGuard('jwt'))
  async findAll():Promise<User[]> {
    return await this.userservice.findAll()
  }
}

我们开一个接口出来
这里的3001是在main.ts中自定的。根据自己情况更改
然后我们可以访问
http://localhost:3001/users/getall

NestJs使用Mongoose对MongoDB操作的方法

得到了结果

NestJs使用Mongoose对MongoDB操作的方法

输出完成。其他操作也是根据类似的步骤进行

到此这篇关于NestJs使用Mongoose对MongoDB操作的方法的文章就介绍到这了,更多相关NestJs操作MongoDB内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript 自动完成脚本整理(33个)
Oct 20 Javascript
jquery无缝向上滚动实现代码
Mar 29 Javascript
Jsonp post 跨域方案
Jul 06 Javascript
纯js的右下角弹窗实例
Mar 12 Javascript
Vue和Bootstrap的整合思路详解
Jun 30 Javascript
JavaScript模块详解
Dec 18 Javascript
javascript变量提升和闭包理解
Mar 12 Javascript
node 解析图片二维码的内容代码实例
Sep 11 Javascript
vue指令v-html使用过滤器filters功能实例
Oct 25 Javascript
基于vue+echarts 数据可视化大屏展示的方法示例
Mar 09 Javascript
vue项目,代码提交至码云,iconfont的用法说明
Jul 30 Javascript
js实现简单的随机点名器
Sep 17 Javascript
linux服务器快速卸载安装node环境(简单上手)
Feb 22 #Javascript
k8s node节点重新加入master集群的实现
Feb 22 #Javascript
js实现简单图片拖拽效果
Feb 22 #Javascript
用vite搭建vue3应用的实现方法
Feb 22 #Vue.js
详解Vite的新体验
Feb 22 #Javascript
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 #Vue.js
Nest.js 授权验证的方法示例
Feb 22 #Javascript
You might like
php中chdir()函数用法实例
2014/11/13 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
2017/05/02 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JS版的date函数(和PHP的date函数一样)
2014/05/12 Javascript
node.js中的console.info方法使用说明
2014/12/09 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
JavaScript实现图片放大镜效果
2019/06/27 Javascript
layer.alert回调函数执行关闭弹窗的实例
2019/09/11 Javascript
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
在Python中测试访问同一数据的竞争条件的方法
2015/04/23 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
python简单获取数组元素个数的方法
2015/07/13 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
使用CSS3制作版头动画效果
2020/12/24 HTML / CSS
军训生自我鉴定范文
2013/12/27 职场文书
决定成败的关键——创业计划书
2014/01/24 职场文书
安全生产月宣传标语
2014/10/06 职场文书
学生打架检讨书
2014/10/20 职场文书
工厂见习报告范文
2014/10/31 职场文书
初中作文评语集锦
2014/12/25 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技