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

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

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


數(shù)據(jù)庫簡介

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

  • MongoDB 是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫當中功能最豐富,最像關系數(shù)據(jù)庫的。

數(shù)據(jù)庫選擇

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

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

配置基本服務

  • 確保電腦已經(jīng)安裝了 MongoDB

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

Mongoose

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

  • MongoDB 是數(shù)據(jù)庫,Nodejs 是js的一個運行環(huán)境,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 方法連接數(shù)據(jù)庫   imports: [UserModule, MongooseModule.forRoot('mongodb://localhost/test')],   controllers: [AppController],   providers: [AppService], }) export class AppModule {}

基礎功能模塊

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

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

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

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

Schema

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

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

  •   /* user.schema.ts */    import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';   // @Prop 裝飾器接受一個可選的參數(shù),通過這個,你可以指示這個屬性是否是必須的,是否需要默認值,或者是標記它作為一個常量,下面是例子   // SchemaFactory 是 mongoose 內(nèi)置的一個方法做用是讀取模式文檔 并創(chuàng)建 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

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

        /* 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 方法刪除成功并返回相應的個數(shù)             const temp = await this.userTest.remove({ _id: sid });             return temp;           }           // 修改           async updateUser(sid: string, data: any) {             // 這里是異步的  remove 方法刪除成功并返回相應的個數(shù)             const temp = await this.userTest.updateOne({ _id: sid }, { $set: data });             return temp;           }     }
  • 等下和其他功能一起在 Module 中引入。

Controller

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

        /* user.controller.ts */     // 引入 Nest.js 內(nèi)置的各個功能     import { Body, Controller, Delete, Get, Param, Post, Put, Query } from '@nestjs/common';     // 引入用戶服務     import { UserService } from './user.service';     // 引入創(chuàng)建用戶 DTO 用于限制從接口處傳來的參數(shù)     import { CreateUserDto } from './user.dto';     // 配置局部路由     @Controller('user')     export class UserController {       constructor(private readonly userService: UserService) {}       // 創(chuàng)建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() 裝飾器提供了元數(shù)據(jù),Nest 用它來組織應用程序結構。

  • 我們把以上內(nèi)容引入到我們的 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' 為數(shù)據(jù)庫表名稱與 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 因為要限制請求參數(shù)的數(shù)據(jù)類型所以這里方式為 application/json

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

  • Postman

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

  • 打開 MongoDB Compass 查看數(shù)據(jù)

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

GET 查所有

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

  • Postman

    聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

  • 打開 MongoDB Compass 查看數(shù)據(jù)

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

GET 查單個用戶

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

  • Postman

聊聊node中怎么使用Nest.js 連接 MongoDB 數(shù)據(jù)庫

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

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
玩弄丰满熟妇XXXXX性60| 少妇太爽丰满一区二区| 日本无人区码卡二卡三卡| 少妇BBWBBW高潮| 老太太 GRANNY| 极品少妇高潮到爽| 久久久久久久99精品国产片| 裸体美女扒开下部无遮挡网站免费| 亚洲爽爆东京爽爆东京爽爆av| 亚洲欧美精品SUV| 在糖心VLOG唐伯虎女主角是谁| ASS黑森林PIC| 各种少妇正面着BBW撒尿视频| 国产裸体XXXX视频在线播放| 亚洲成AV人片天堂网| 又粗又硬又黄A级毛片| 亚洲AV日韩AV激情亚洲| 一本大道东京热无码AV| PYTHON人马大战CSDN| 日本人做暖免费高清视频| 久久SE精品一区二区| 男男车车的车车网站W98免费| 人妻无码一区二区三区视频| 小雪尝禁果又粗又大的动态视频 | 成人爽A毛片在线视频淮北| 国产乱子伦精品无码专区| 久久久久成人片免费观看| 欧亚成年男女深夜百度网盘 | 亚洲熟妇AV午夜无码不卡| CC小恩雅透明内抹油的使用方法| 国产成人夜色高潮福利影视| 久久精品国产亚洲AV蜜臀色欲| 欧美人妻少妇精品视频专区| 无码专区无码专区视频网址| 一区二区三区在线 | 欧| 超碰人人看人人2017| 护士HD老师FREE性ⅩⅩⅩ| 欧美另类视频在线观看| 西西人体自慰扒开下部93| 中国人妻被两个老外三P| 囯精产品一品二品国精| 久久本道综合久久伊人| 狠狠色伊人亚洲综合网站野外 | А√8天堂中文官网资源| 国产激情久久久久影院老熟女免费 | 男女后进式猛烈XX00动态图| 无码热综合无码色综合| 又嫩又硬又黄又爽的视频| 国产94在线 | 传媒麻豆| 久热中文字幕无码视频| 狠狠躁夜夜躁人人躁婷婷| 丰满少妇人妻HD高清大乳| 麻豆人妻少妇精品无码专区2| 久久久久久久精品妇女99| 日产国产欧美精品另类小说| 亚洲乱码AV一区二区| 成年免费A级毛片| 久久久精品中文字幕麻豆发布| 日本一品和二品区别| 亚洲综合AV色婷婷国产野外| 国产96色在线 | 国| 蜜臀AV在线播放| 亚欧成人无码AV在线播放| SUNTEK中老年人女妈妈秋装| 精品久久久久久成人AV| 日本丰满护士爆乳XXXX无遮挡| 亚洲人成电影网站色WWW| 公车上双乳被老汉揉搓玩弄漫画 | 国产成在线观看免费视频成本人| 美国一面亲上边一面膜下边| 无人区免费一二三四乱码| JAPAN丰满人妻HD| 久久久久久精品免费免费英国| 调教小SAO货撅起打屁股作文 | 国产激情З∠视频一区二区| 欧洲美熟女乱又伦AV影片| 亚洲综合欧美在线一区在线播放| 国产二级一片内射视频插放| 亚洲AⅤ永久无码精品毛片| 亚洲色偷偷综合亚洲AVYP| FRYEE性欧美18 19| 国产欧洲野花A级| 麻豆我精产国品一二三产区区别 | 国产黄 色 网 站 成 人免费| 欧美性大战久久久久久| 亚洲综合色成在线观看| 吃奶呻吟打开双腿做受是免费视频 | 三个男人换着躁我一个| 2022最新韩国理伦片在线观看| 精品国产乱子伦一区二区三区| 天天天狠天天碰天天爱| 人人爽人人爽人人爽| 欧美日韩乱一区二区三区| 野花香HD免费高清版6高清版| 国产婷婷丁香五月缴情成人网| 色欲麻豆国产福利精品| VODAFONEWIFI性另类| 免费直播视频在线观看| 一夲道中文字幕AV高清片| 饥渴人妻欲求不满在线| 无遮挡粉嫩小泬久久久久久软件 | 室友们都馋我肉馅小水饺| XOXOXO性ⅩYY欧美片| 免费看含羞草AV片成人网址| 夜夜春夜夜爽一区二区三区| 精品国产国偷自产在线观看| 亚洲AV成人片无码网站网一区| 国产成人亚洲色成人网站WWW永久四虎| 人人妻人人澡人人爽欧美一区| 97人妻成人免费视频| 美女把尿口扒开让男人桶| 一本久久A久久精品综合| 精品一区二区三区无码视频| 亚洲成AV人在线观看| 国产亚洲欧美精品久久久| 无码日韩精品一区二区人妻| 国产成人无码午夜视频在线观看| 日韩日韩日韩日韩日韩| 不卡无码人妻一区二区三区| 人妻少妇精品久久久久久| BGMBGMBGM日本XX| 欧美一级 片内射黑人B| BT天堂新版中文在线| 欧美噜噜久久久XXX| BT天堂新版中文在线地址| 欧美A级毛欧美1级A大片式放| 111111少妇影院| 娜娜麻豆国产电影| 91人妻人人做人碰人人爽蜜闫| 妺妺坐在我腿上勃起弄了应用| 51CG今日吃瓜热门大瓜| 欧美乱熟妇XXXX白浆| YSL千人千色8610| 韩国乱码片免费看| 亚洲另类春色国产精品| 久久精品国产WWW456C0M| 夜夜添无码一区二区三区| 两性午夜刺激性视频2345| 18禁黄网站禁片无遮挡观看AP | 99久RE热视频这只有精品6| 欧美极品少妇XXXXⅩ| 把腿张开我要cao死你在线观看| 日本一区二区三区免费播放 | 兽交ZOOSKOO| 国产精品白丝JK白祙喷水视频| 五月婷日韩中文字幕| 黑人巨大无码中文字幕无码| 亚洲欧美xxxx| 美女扒开腿让男人桶爽免费| 久久久精品人妻人人澡| 曰曰摸天天添天天湿| 国产精品无码专区在线播放| 娇妻借朋友高H繁交H| 亚洲色WWW成人永久网址| 老头猛挺进小雯的体内视频| 99久久免费精品国产72精品九| 欧美最猛黑人XXXⅩ猛男欧视频| 被公牛日到了高潮| 天天躁夜夜躁狠狠躁2021| 国内精品久久久久影院日本| 亚洲午夜久久久久久噜噜噜| 妺妺窝人体色WWW精品| 成人精品免费AV不卡在线观看 | 成人免费视频无码专区| 无码人妻ΑⅤ免费一区二区三区| 狠狠综合久久综合88亚洲| 在公车上露出奶头自慰| 人妻大战黑人白浆狂泄| 国产精品18久久久久久VR| 亚洲女和黑人最新AV| 欧美成人国产精品视频蜜芽| 丰满熟妇大肉唇张开| 亚洲AV综合色区无码一区爱AV| 麻豆AV一区二区三区久久| 餐桌下玩弄人妻丝袜小脚| 无码网站天天爽免费看视频| 精产国品一二三产区别手机| 粉嫩av观看成人网站| 男生J桶进女人P又色又爽又黄| 吃奶呻吟打开双腿做受视频| 亚洲AVAV国产AV综合AV| 老狼一区忘忧草欢迎您大豆| 成本人无码H无码动漫在线网站| 香蕉AV福利精品导航| 美丽人妻被按摩中出中文字幕| 成人区人妻精品一区二区不卡视频| 香港三日本三级少妇三级2021| 老头的大龟挺进秀婷小说| 丁香狠狠色婷婷久久综合| 亚洲精品无码AV片| 人妻无码中文字幕| 狠狠人妻熟妇Av又粗又大| 97国产精华最好的产品在线| 色综合天天天天综合狠狠爱| 人妻 中文无码 中出| 啊灬啊灬啊灬快好深| 亚洲丰满少妇多毛大隂户| 欧洲精品一线二线三线区别| 国产熟女一区二区三区四区五区| 中文字幕日韩精品无码内射|