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 相关文章推荐
用正则获取指定路径文件的名称
Feb 27 Javascript
JS实现金额转换(将输入的阿拉伯数字)转换成中文的实现代码
Sep 30 Javascript
移动端js图片查看器
Nov 17 Javascript
Vue.js系列之vue-router(上)(3)
Jan 03 Javascript
React Native中NavigatorIOS组件的简单使用详解
Jan 27 Javascript
javascript高仿热血传奇游戏实现代码
Feb 22 Javascript
详解js访问对象的属性和方法
Oct 25 Javascript
js取0-9随机取4个数不重复的数字代码实例
Mar 27 Javascript
Vue+webpack实现懒加载过程解析
Feb 17 Javascript
OpenLayers实现图层切换控件
Sep 25 Javascript
js前端对于大量数据的展示方式及处理方法
Dec 02 Javascript
关于Js中new操作符的作用详解
Feb 21 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版
2006/10/09 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
2013/12/03 PHP
33道php常见面试题及答案
2015/07/06 PHP
PHP获取远程http或ftp文件的md5值的方法
2019/04/15 PHP
Javascript模板技术
2007/04/27 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
Js中的onblur和onfocus事件应用介绍
2013/08/27 Javascript
JQuery表格拖动调整列宽效果(自己动手写的)
2014/09/01 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
JS数组排序方法实例分析
2016/12/16 Javascript
vue.js 获取select中的value实例
2018/03/01 Javascript
vue配置多页面的实现方法
2018/05/22 Javascript
javascript面向对象三大特征之封装实例详解
2019/07/24 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python import用法以及与from...import的区别
2015/05/28 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
Restful_framework视图组件代码实例解析
2020/11/17 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
小学生三分钟演讲稿
2014/08/18 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书