成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

node中怎么使用Nest.js 連接 MongoDB 數據庫?下面本篇文章給大家介紹一下node 框架 Nest.js 使用 MongoDB 的方法,希望對大家有所幫助!

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

在學習 Nest 與數據庫進行連接時,難免會遇到選擇數據庫的問題,這里作者選擇的是 MongoDB 記錄一下簡單使用。 大家可以根據不同需求選擇合適的數據庫。

貼出跟進看的文檔以方便大家進一步學習 Nest 中文文檔 ,MongoDB菜鳥教程


數據庫簡介

  • MongoDB 是一個基于分布式文件存儲的數據庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴展的高性能數據存儲解決方案。

  • MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。

數據庫選擇

  • 目前市面上有很多成熟的數據庫可供大家選擇。

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 據翻看各種資料作者這里得出的結論為大項目用 PostgreSql 小項目用 MongoDB 所以作者準備一起學習下,這次因為想做一個小項目練練手所以先用 MongoDB 看看怎么樣。
  • 大家有不同看法歡迎在評論區討論。

配置基本服務

  • 確保電腦已經安裝了 MongoDB

  • 記得弄完做一下環境配置,可以開機自啟, 也可以選擇自己啟動哈hhh看個人

Mongoose

  • 簡單介紹一下 , Mongoose 是一個操作 MongoDBNodejs 驅動庫

  • MongoDB 是數據庫,Nodejs 是js的一個運行環境,Nodejs 不直接操作 Mongodb,這個時候就需要相應的驅動程序來提供接口。

  • 在 Nest 項目中安裝一下依賴項,兩種安裝方式,自行選擇

     $ npm install --save @nestjs/mongoose mongoose  // NPM 安裝  $ yarn add @nestjs/mongoose mongoose  // YARN 安裝復制代碼
  • 安裝完成后我們在 AppModule 文件中引入一下

     /* app.module.ts */ import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; // 我自己準備的 USER 模塊 import { UserModule } from './user/user.module'; // 引入 Mongoose  import { MongooseModule } from '@nestjs/mongoose'; @Module({   // 用 forRoot 方法連接數據庫   imports: [UserModule, MongooseModule.forRoot('mongodb://localhost/test')],   controllers: [AppController],   providers: [AppService], }) export class AppModule {}

基礎功能模塊

  • 這里用一個 User 模塊來做 demo

  • 這里我理解的基礎功能模塊包括 module(模塊) Controller(控制器) Service(提供者) Schema(數據模型) 我們主要是用 Nest對 MongoDB 做增刪改查 這幾個模塊目前暫時夠用。

  • 對這幾個模塊做一些簡單介紹:

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 由于我們上面已經對 app.module.ts 該根模塊已經引入過了 mongoose 所以下面我們之間看一下功能模塊是怎樣的

Schema

  • Mongoose中,一切都源于 Scheme,每個 Schema 都會映射到 MongoDB 的一個集合,并定義集合內文檔的結構。Schema 被用來定義模型,而模型負責從底層創建和讀取 MongoDB 的文檔。

  • Schema 可以用 NestJS 內置的裝飾器來創建,或者也可以自己動手使用 Mongoose的常規方式。使用裝飾器來創建 Schema 會極大大減少引用并且提高代碼的可讀性。這里作者用的是官方推薦方式用裝飾器來創建,畢竟用的是 Nest 不得用點特色的hhh。

  •   /* user.schema.ts */    import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';   // @Prop 裝飾器接受一個可選的參數,通過這個,你可以指示這個屬性是否是必須的,是否需要默認值,或者是標記它作為一個常量,下面是例子   // SchemaFactory 是 mongoose 內置的一個方法做用是讀取模式文檔 并創建 Schema 對象   import { Document } from 'mongoose';   export type UserDocument = User & Document;   @Schema()   export class User extends Document {     @Prop()     name: string;     // 設置值為必填     @Prop({ required: true })     age: number;     @Prop()     height: number;   }   export const UserSchema = SchemaFactory.createForClass(User);
  • 等下和其他功能一起在 Module 中引入。

Service

  • 控制器的目的是接收應用的特定請求。路由機制控制哪個控制器接收哪些請求。通常,每個控制器有多個路由,不同的路由可以執行不同的操作。

        /* user.service.ts */     import { Model } from 'mongoose';     import { InjectModel } from '@nestjs/mongoose';     import { User, UserDocument } from 'src/schema/user.schema';     import { CreateUserDto } from './user.dto';     @Injectable()     export class UserService {       // 注冊Schema后,可以使用 @InjectModel() 裝飾器將 User 模型注入到 UserService 中:         constructor(@InjectModel('User') private userTest: Model<UserDocument>) {}           // 添加           async create(createUserDto: CreateUserDto): Promise<User> {             const createUser = new this.userTest(createUserDto);             const temp = await createUser.save();             return temp;           }           // 查找           async findAll(): Promise<User[]> {             // 這里是異步的             const temp = await this.userTest.find().exec();             return temp;           }           // 查找           async findOne(name: string): Promise<User[]> {             // 這里是異步的             const temp = await this.userTest.find({ name });             return temp;           }           // 刪除           async delete(sid: number) {             // 這里是異步的  remove 方法刪除成功并返回相應的個數             const temp = await this.userTest.remove({ _id: sid });             return temp;           }           // 修改           async updateUser(sid: string, data: any) {             // 這里是異步的  remove 方法刪除成功并返回相應的個數             const temp = await this.userTest.updateOne({ _id: sid }, { $set: data });             return temp;           }     }
  • 等下和其他功能一起在 Module 中引入。

Controller

  • 控制器的目的是接收應用的特定請求。路由機制控制哪個控制器接收哪些請求。通常,每個控制器有多個路由,不同的路由可以執行不同的操作。

        /* user.controller.ts */     // 引入 Nest.js 內置的各個功能     import { Body, Controller, Delete, Get, Param, Post, Put, Query } from '@nestjs/common';     // 引入用戶服務     import { UserService } from './user.service';     // 引入創建用戶 DTO 用于限制從接口處傳來的參數     import { CreateUserDto } from './user.dto';     // 配置局部路由     @Controller('user')     export class UserController {       constructor(private readonly userService: UserService) {}       // 創建user路由 user/createUser       @Post('createUser')       async createUser(@Body() body: CreateUserDto) {         return this.userService.create(body);       }       //查找所有 user 路由       @Get('findAll')       async findAll() {         return this.userService.findAll();       }       // 查找某一個用戶路由       @Get('findOne')       async findOne(@Query() query: any) {         return this.userService.findOne(query.name);       }       // 刪除一個用戶的路由       @Delete(':sid')       deleteUser(@Param() param: any) {         return this.userService.delete(param.sid);       }       // 更改用戶信息的路由       @Put(':sid')       updateUser(@Body() body: any, @Param() param: any) {         return this.userService.updateUser(param.sid, body);       }     }

Moudle

  • 模塊是具有 @Module() 裝飾器的類。 @Module() 裝飾器提供了元數據,Nest 用它來組織應用程序結構。

  • 我們把以上內容引入到我們的 User 模塊中

        /* user.module.ts */     import { Module } from '@nestjs/common';     import { UserController } from './user.controller';     import { UserService } from './user.service';     import { MongooseModule } from '@nestjs/mongoose';     import { UserSchema } from 'src/schema/user.schema';     @Module({        // MongooseModule提供了forFeature()方法來配置模塊,包括定義哪些模型應該注冊在當前范圍中。        // 如果你還想在另外的模塊中使用這個模型,將MongooseModule添加到CatsModule的exports部分并在其他模塊中導入CatsModule。        // 這里的 name:'User' 為數據庫表名稱與 service 中注入的表名稱對應兩者不一樣會報錯       imports: [MongooseModule.forFeature([{ name: 'User', schema: UserSchema }])],       controllers: [UserController],       providers: [UserService],     })     export class UserModule {}
    • 以上我們的基礎布局完成,可以進行接口檢驗了

接口檢驗

  • 處理這些配置我們還在 main.ts 文件中配置了全局路由 app.setGlobalPrefix('api'); 意思就是所有請求前面會有一個 /api/
  • 這里我們用的 PostManMongoDB Compass 官方推薦的可視化工具查看效果

POST 增

  • 這里我使用 POST 請求,路由為/api/user/createUser 因為要限制請求參數的數據類型所以這里方式為 application/json

  • 因為這里我們之前定義的 User 數據模型為 name,age,height, 所以請求里面只需要這幾個參數即可,別的就算寫進去也添加不到集合中

  • Postman

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 打開 MongoDB Compass 查看數據

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 可以看到我們已經添加到數據庫中一條數據,接下來我們在添加兩條,方便等會的查詢/刪除/更改操作

GET 查所有

  • 這里我使用 GET 請求,,路由為/api/user/findAll 因為這里是查 User 集合內所有數據,所以不用添加請求參數

  • Postman

    聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 打開 MongoDB Compass 查看數據

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 可以看到我們已經查詢到數據庫中剛才在 User 集合中添加的三條數據切記要點 REFRESH 建不然軟件不會自己刷新

GET 查單個用戶

  • 這里我使用 GET 請求,路由為/api/user/findOne 因為這里是查 User 集合內對應搜索條件的數據集合,這里我們用的是name 去查詢的。也可以用唯一值 id 去查詢。

  • Postman

聊聊node中怎么使用Nest.js 連接 MongoDB 數據庫

  • 可以看到返回結果是一個集合,了解

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
JAVAPARSER丰满白老师| AV无码不卡在线观看免费| 一本一道人人妻人人妻| 野花免费高清完整在线观看| 中国XXXX真实偷拍| av色欲无码人妻中文字幕| 宝贝把腿开大让我添添电影| 丰满熟妇大号BBWBBWBBW| 国产精品美女久久久网站动漫| 国内精品久久久久久久97牛牛| 精品无人区一区二区三区在线| 乱码AV麻豆丝袜熟女系列| 欧美人与禽交片在线观看| 日子我妈妈毛片儿电影| 性高湖久久久久久久久| 亚洲中文无码MV| ⅩXXSEXHDVIDEO欧美| 粉嫩丰满人妻内射| 国产重口老太和两个小伙另类| 久久久久久国产精品无码下载 | 亚洲一区在线曰日韩在线| 中国女RAPPER大妈| 成人亚洲AV日韩AV欧v| 国产午夜影视大全免费观看| 久久久久亚洲AV无码专区首页网| 欧美性猛交ⅩXXX乱大交| 污黄啪啪网18以下勿进| 亚洲码与欧洲码一二三四区别| 18禁无遮挡羞羞污污污污免费| 岛国精品一区免费视频在线观看 | 亚洲AV成人片在线观看18 | 西西顶级艺术人像摄影| 亚洲伊人成无码综合网| JIZZ成熟丰满韩国女人少妇| 国产精品国产三级国产普通话| 久久久久国产精品熟女影院| 人妻无码系列一区二区三区| 亚洲AV午夜成人影院老师机影院| 性欧美玩弄性少妇HD| 国产AV无码专区亚洲AV软件| 久久久久久精品天堂无码中文字幕| 人妻含泪让粗大挺进| 亚洲AV旡码高清在线观看| 6080午夜三级中文在线观看| 国产精品久久久久精品三级| 浪潮AV一区二区三区| 三级成人AV电影在线观看| 亚洲国产精品福利片在线观看| AV优选天堂污污污成人亚洲| 国产在线乱子伦一区二区| 内地CHINA高潮VIDEO| 午夜理论片福利在线观看| 最新AV片免费网站入口| 国产精品成人A区在线观看| 狂躁美女大BBBBBB视频1| 婷婷丁香六月激情综合啪 | А√最新版资源在线官网| 韩漫无羞遮无删减漫免费| 日本JAPANESE猛男GAY| 亚洲色18成人网站WWW| 粉嫩av一区二区三区| 久久综合综合久久综合| 无码欧精品亚洲日韩一区| 97婷婷狠狠成为人免费视频| 国色天香在线观看全集免费播放 | 亚洲国产精品无码中文字| 哺乳挤奶一区二区三区免费看| 久久av蜜臀人妻一区二区三区| 少妇高潮太爽了在线观看欧美| 中国无码人妻丰满熟妇啪啪软件 | 新妺妺窝人体色WWW| 锕锕锕锕锕锕锕好疼免费看网站| 精品无码国产自产拍在线观看 | 高清播放器欧美大片| 免费午夜无码18禁无码影视| 亚洲AV无码专区在线电影天堂| 厨房掀起少妇裙子挺进去| 老妇FREE性VIDEOSXX| 亚洲AV成人无码精品| 成人免费视频无码专区| 美女爆乳裸体WWW免费网站| 午夜无码一区二区三区在线观看| S货叫大点声C烂你的SB视频| 久久久久亚洲AV片无码V| 性做久久久久久久久| 荡公乱妇HD电影中文字幕| 欧美 亚洲 日本 成人| 亚洲日韩欧洲无码A∨夜夜| 国产精品你懂的在线播放| 日本人和NEWBALANCE| 97超碰精品成人国产| 久久久久亚洲AV成人网| 亚洲AV无码专区青青草原| 高H禁伦餐桌上的肉伦| 人妻妺妺窝人体色777777| 制服丝袜自拍另类第1页| 娇妻呻吟黑人又粗又大视频| 无码无遮挡在线观看免费| 成人奭片免费观看| 欧美最猛黑人XXXⅩ猛男欧| 在线成人A毛片免费播放| 精品久久久久久无码人妻VR| 西瓜影院免费观看完整版电影| 高清毛茸茸的中国少妇| 日本中文字幕乱码免费| JAPANESEHD春药2| 嫩草在线视频WWW免费看| 在教室伦流澡到高潮HGL动漫 | 日韩A级成人免费无码视频| 99精品国产成人综合| 老头巨大挺进莹莹的体内免费视频| 亚洲国产精品无码久久九九大片 | 小说 亚洲 无码 精品| 国产成人亚洲精品无码车A| 少妇扒开腿让我爽了一夜| 成人区精品人妻人妻AV| 人人妻人人澡人人爽人人精品图片| 99久久国产综合精品SWAG| 男女性色大片免费网站| 1313午夜精品理论片| 免费无码成人AV在线播| 中文人妻无码一区二区三区| 林静公交车被做到高C| 瑜伽裤国产一区二区三区| 久久人人爽人人爽人人AV东京热 | 亚洲AV午夜成人片忘忧草在线 | 亚洲女久久久噜噜噜熟女| 娇小VIDEOS出血| 亚洲欧美日韩一区二区三区在线| 精品国产AⅤ一区二区三区在线看 精品国产AⅤ一区二区三区V视界 精品国产AⅤ一区二区三区V免费 精品国产AⅤ一区二区三区4区 | 国产午夜性春猛交ⅩXXX| 亚洲AⅤ秘区二区三区4| 国内精品久久久久久无码不卡| 亚洲AV无码久久精品蜜桃| 国内老熟妇对白HDXXXX| 亚洲精品乱码久久久久久蜜桃不卡| 精产国品一二三产品区别视频| 亚洲欧美在线综合色影视| 久久精品亚洲精品无码白云TV| 一本色道无码道DVD在线观看| 理论片在线播放网站观看| 97久久超碰极品视觉盛宴| 青青爽无码视频在线观看| 成人H动漫精品一区二区无码| 色AV综合AV无码AV网站| 国产成人亚洲综合精品| 性生生活30分钟免费| 精品国产综合区久久久久久| 一区蜜桃中文不卡在线| 男女无遮挡猛进猛出免费视频 | 无码人妻久久久久一区二区三区91| 国产偷国产偷亚洲高清人| 亚洲精品无码AV中文字幕| 久久亚洲AV无码精品色午夜| 7777精品久久久大香线蕉| 人妻丝袜中文无码AV影音先锋专| 丰满少妇熟女高潮流白浆| 亚州v不卡ww在线| 久久精品人妻一区二区三区一| 2021最新久久久视精品爱| 日本JAPANESE丰满白浆| 国产剧情麻豆女教师在线观看| 亚洲国产中文在线二区三区免| 麻豆久久亚洲AV成人无码电影| V与子敌伦刺激对白播放| 台湾无码AV一区二区三区| 韩国精品福利一区二区三区| 野花社区WWW官网在线观看| 欧美日韩一区精品视频一区二区| 大荫蒂又大又长又硬又紧| 亚洲AV永久无码精品秋霞电影影| 久久五月丁香综合中文亚洲| JAPANESE军人强迫| 无码人妻丰满熟妇区五十路在线| 久久ER99热精品一区二区| AV无码欧洲亚洲电影网| 天天摸夜夜摸夜夜狠狠摸| 久久99精品久久久久麻豆| FREEFORNVIDEOS性| 无遮挡又黄又刺激的视频| 久久夜色精品国产噜噜| 波多野结衣好大好紧好爽 | 5566好久不见MP3免费下载| 少妇无力反抗慢慢张开双腿| 娇小性XXXXX极品娇小| 99久久人妻精品免费一区| 忘忧草日本社区WWW在线| 久久久久久无码AV成人影院| 成人一区二区三区视频在线观看| 亚洲AV无码秘 蜜桃牛牛| 男人J进女人屁网站免费| 国产成人综合亚洲精品| 野花香影院在线观看视频免费| 日本熟少妇裸交ⅩXX视频| 精品国产青草久久久久福利| А√天堂资源最新版在线官网| 亚洲AV色香蕉一区二区三区夜夜嗨| 欧美IPHONEXSMAX免费| 国产欧美日韩综合精品一区二区| 中国熟妇色XXXXⅩ老妇|