Jadual Kandungan
Pengenalan Pangkalan Data
Pemilihan Pangkalan Data
Konfigurasikan perkhidmatan asas
Mongoose
Skema
Service
Controller
Moudle
接口检验
POST 增
GET 查所有
GET 查单个用户
PUT 改
DELETE Delete
Ringkasan
Rumah hujung hadapan web tutorial js Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

Jan 26, 2022 pm 05:52 PM
mongodb node pangkalan data

Bagaimana untuk menggunakan Nest.js dalam

nod untuk menyambung ke pangkalan data MongoDB? Artikel berikut akan memperkenalkan kepada anda cara menggunakan MongoDB dalam rangka kerja nod Nest.js saya harap ia akan membantu anda.

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

Apabila belajar menyambungkan Nest ke pangkalan data, anda pasti akan menghadapi masalah memilih pangkalan data Di sini pengarang memilih MongoDB untuk merekod penggunaan mudah. Anda boleh memilih pangkalan data yang sesuai mengikut keperluan yang berbeza.

Siarkan dokumen susulan untuk memudahkan pembelajaran lanjutDokumen Nest Chinese,Tutorial Newbie MongoDB


Pengenalan Pangkalan Data

  • MongoDB ialah pangkalan data berdasarkan storan fail yang diedarkan. Ditulis dalam bahasa C. Direka bentuk untuk menyediakan penyelesaian storan data berprestasi tinggi berskala untuk aplikasi WEB.

  • MongoDB ialah produk antara pangkalan data hubungan dan pangkalan data bukan hubungan.

Pemilihan Pangkalan Data

  • Terdapat banyak pangkalan data matang di pasaran untuk anda pilih.

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • Menurut membaca pelbagai bahan, penulis membuat kesimpulan bahawa ia sesuai untuk projek besar PostgreSql dan projek kecil MongoDB jadi penulis bersedia untuk bekerjasama Mari belajar Kali ini saya ingin membuat projek kecil untuk mempraktikkan kemahiran saya, jadi saya akan menggunakan MongoDB terlebih dahulu dan lihat bagaimana keadaannya.
  • Jika anda mempunyai pendapat yang berbeza, sila berasa bebas untuk membincangkannya di ruangan komen.

Konfigurasikan perkhidmatan asas

  • Pastikan komputer telah dipasang MongoDB Tidak

  • Ingat untuk menyelesaikan ia Konfigurasi persekitaran, anda boleh memulakannya secara automatik selepas boot, atau anda boleh memilih untuk memulakannya sendiri hahh, ia bergantung pada individu

Mongoose

  • Pengenalan ringkas, Mongoose Ya MongoDB perpustakaan pemacu Nodejs

  • yang mengendalikan MongoDB ialah pangkalan data, Nodejs ialah persekitaran berjalan untuk js, Nodejs tidak beroperasi secara langsung Mongodb, ini Pada masa ini, pemacu yang sepadan diperlukan untuk menyediakan antara muka.

  • Pasang dependencies dalam projek Nest, terdapat dua kaedah pemasangan, pilih sendiri

     $ npm install --save @nestjs/mongoose mongoose  // NPM 安装
     $ yarn add @nestjs/mongoose mongoose  // YARN 安装复制代码
    Salin selepas log masuk
  • Selepas pemasangan selesai, kami akan memasangnya dalam fail AppModule Perkenalkan modul fungsi asas

     /* 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 {}
    Salin selepas log masuk

  • Di sini kami menggunakan modul Pengguna untuk melakukan demo

  • Modul berfungsi asas yang saya faham di sini termasuk module (modul) Controller (pengawal) Service (penyedia) Schema (model data) Kami terutamanya menggunakan Nest对 MongoDB untuk tambahan Modul pemadaman, pengubahsuaian dan semakan ini mencukupi buat masa ini.

  • Pengenalan ringkas kepada modul ini:

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • Disebabkan Kami ada memperkenalkan modul akar app.module.ts di atas mongoose, jadi mari kita lihat rupa modul berfungsi

Skema

  • Dalam Mongoose, semuanya berasal daripada Skim, setiap Schema akan dipetakan kepada koleksi MongoDB dan mentakrifkan struktur dokumen dalam koleksi. Schema digunakan untuk mentakrifkan model dan model bertanggungjawab untuk mencipta dan membaca dokumen MongoDB dari bawah.

  • Schema boleh dibuat menggunakan NestJS penghias terbina dalam, atau anda boleh melakukannya sendiri menggunakan Mongoosekaedah konvensional. Menggunakan penghias untuk mencipta akan mengurangkan rujukan dan meningkatkan kebolehbacaan kod. Di sini penulis menggunakan kaedah yang disyorkan rasmi untuk menciptanya dengan penghias Lagipun, saya menggunakan Nest dan saya tidak dibenarkan menggunakan sesuatu yang istimewa hhh. Schema

  •   /* 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);
    Salin selepas log masuk
  • Ia akan diperkenalkan dalam Modul bersama-sama dengan fungsi lain nanti.

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(&#39;User&#39;) 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;
              }
        }
    Salin selepas log masuk
  • 等下和其他功能一起在 Module 中引入。

Controller

  • 控制器的目的是接收应用的特定请求。路由机制控制哪个控制器接收哪些请求。通常,每个控制器有多个路由,不同的路由可以执行不同的操作。

        /* user.controller.ts */
        // 引入 Nest.js 内置的各个功能
        import { Body, Controller, Delete, Get, Param, Post, Put, Query } from &#39;@nestjs/common&#39;;
        // 引入用户服务
        import { UserService } from &#39;./user.service&#39;;
        // 引入创建用户 DTO 用于限制从接口处传来的参数
        import { CreateUserDto } from &#39;./user.dto&#39;;
        // 配置局部路由
        @Controller(&#39;user&#39;)
        export class UserController {
          constructor(private readonly userService: UserService) {}
          // 创建user路由 user/createUser
          @Post(&#39;createUser&#39;)
          async createUser(@Body() body: CreateUserDto) {
            return this.userService.create(body);
          }
          //查找所有 user 路由
          @Get(&#39;findAll&#39;)
          async findAll() {
            return this.userService.findAll();
          }
          // 查找某一个用户路由
          @Get(&#39;findOne&#39;)
          async findOne(@Query() query: any) {
            return this.userService.findOne(query.name);
          }
          // 删除一个用户的路由
          @Delete(&#39;:sid&#39;)
          deleteUser(@Param() param: any) {
            return this.userService.delete(param.sid);
          }
          // 更改用户信息的路由
          @Put(&#39;:sid&#39;)
          updateUser(@Body() body: any, @Param() param: any) {
            return this.userService.updateUser(param.sid, body);
          }
        }
    Salin selepas log masuk

Moudle

  • 模块是具有 @Module() 装饰器的类。 @Module() 装饰器提供了元数据,Nest 用它来组织应用程序结构。

  • 我们把以上内容引入到我们的 User 模块中

        /* user.module.ts */
        import { Module } from &#39;@nestjs/common&#39;;
        import { UserController } from &#39;./user.controller&#39;;
        import { UserService } from &#39;./user.service&#39;;
        import { MongooseModule } from &#39;@nestjs/mongoose&#39;;
        import { UserSchema } from &#39;src/schema/user.schema&#39;;
        @Module({
           // MongooseModule提供了forFeature()方法来配置模块,包括定义哪些模型应该注册在当前范围中。
           // 如果你还想在另外的模块中使用这个模型,将MongooseModule添加到CatsModule的exports部分并在其他模块中导入CatsModule。
           // 这里的 name:&#39;User&#39; 为数据库表名称与 service 中注入的表名称对应两者不一样会报错
          imports: [MongooseModule.forFeature([{ name: &#39;User&#39;, schema: UserSchema }])],
          controllers: [UserController],
          providers: [UserService],
        })
        export class UserModule {}
    Salin selepas log masuk
    • 以上我们的基础布局完成,可以进行接口检验了

接口检验

  • 处理这些配置我们还在 main.ts 文件中配置了全局路由 app.setGlobalPrefix('api'); 意思就是所有请求前面会有一个 /api/
  • 这里我们用的 PostManMongoDB Compass 官方推荐的可视化工具查看效果

POST 增

  • 这里我使用 POST 请求,路由为/api/user/createUser 因为要限制请求参数的数据类型所以这里方式为 application/json

  • 因为这里我们之前定义的 User 数据模型为 name,age,height, 所以请求里面只需要这几个参数即可,别的就算写进去也添加不到集合中

  • Postman

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 打开 MongoDB Compass 查看数据

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 可以看到我们已经添加到数据库中一条数据,接下来我们在添加两条,方便等会的查询/删除/更改操作

GET 查所有

  • 这里我使用 GET 请求,,路由为/api/user/findAll 因为这里是查 User 集合内所有数据,所以不用添加请求参数

  • Postman

    Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 打开 MongoDB Compass 查看数据

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 可以看到我们已经查询到数据库中刚才在 User 集合中添加的三条数据切记要点 REFRESH 建不然软件不会自己刷新

GET 查单个用户

  • 这里我使用 GET 请求,路由为/api/user/findOne 因为这里是查 User 集合内对应搜索条件的数据集合,这里我们用的是name 去查询的。也可以用唯一值 id 去查询。

  • Postman

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 可以看到返回结果是一个集合,了解更多查询方式可以看下官网

PUT 改

  • 这里我使用 PUT 请求,路由为/api/user/:sid 因为要限制请求参数的数据类型所以这里方式为 application/json

  • 因为这里我们之前定义的 User 数据模型为 age,height, 所以请求里面只需要这几个参数即可,别的就算写进去也添加不到集合中,我们这里传入数据库中小明的_id 61eea1b4144ea374a5b8455a 传入 Param 中 ,然后把要修改的内容放入 Body  中

  • Postman

    Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 打开 MongoDB Compass 查看数据

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • 可以看到我们已经把小明的年龄与身高做了修改

DELETE Delete

  • Di sini saya menggunakan DELETE untuk meminta, dan laluannya ialah /api/user/:sid Kerana saya ingin mengehadkan jenis data permintaan parameter, kaedahnya di sini ialah application/json

  • Di sini kita luluskan _id 61eea1b4144ea374a5b8455a Xiao Ming dalam pangkalan data ke dalam Param dan mulakan permintaan

  • Posmen

Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • Buka MongoDB Compass untuk melihat data

1Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod

  • Anda boleh lihat maklumat Xiao Ming tidak lagi wujud

Ringkasan

  • Setakat ini kami ada selesai menggunakannya dalam Nest.js Mongoose operasi asas pada MongoDB data. Dan selesai menggunakan penghias untuk membuat model data Schema dalam Nest.
  • Melihat dokumentasi, nampaknya anda juga boleh menggunakan TypeORM terbina dalam dalam Nest untuk membuat model. Rakan yang berminat boleh melihat. Apabila saya kembali untuk mempelajari sambungan pangkalan data lain, saya akan membacanya dan melihat cara mengendalikannya.
  • Masih banyak yang perlu dipelajari tentang Nest, seperti saluran paip, perisian tengah, pemintas, pengawal laluan, dll. Saya bercadang untuk menggunakan ini dalam menulis demo kecil untuk mendalami pemahaman peribadi saya hanya membaca dokumentasi. Difahamkan, saya tidak akan pergi ke butiran di sini~ Apa yang saya tahu setakat ini adalah sangat berguna untuk menggunakan saluran paip untuk menentukan jenis permintaan hhh Rakan-rakan yang berminat boleh belajar tentang Pengesah Kelas

Untuk lebih banyak pengetahuan berkaitan nod, sila lawati: tutorial nodejs!

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan Nest.js untuk menyambung ke pangkalan data MongoDB dalam nod. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mengkonfigurasi pengembangan automatik MongoDB pada Debian Cara mengkonfigurasi pengembangan automatik MongoDB pada Debian Apr 02, 2025 am 07:36 AM

Artikel ini memperkenalkan cara mengkonfigurasi MongoDB pada sistem Debian untuk mencapai pengembangan automatik. Langkah -langkah utama termasuk menubuhkan set replika MongoDB dan pemantauan ruang cakera. 1. Pemasangan MongoDB Pertama, pastikan MongoDB dipasang pada sistem Debian. Pasang menggunakan arahan berikut: SudoaptDateSudoaptInstall-ImongoDB-Org 2. Mengkonfigurasi set replika replika MongoDB MongoDB Set memastikan ketersediaan dan kelebihan data yang tinggi, yang merupakan asas untuk mencapai pengembangan kapasiti automatik. Mula MongoDB Service: sudosystemctlstartmongodsudosys

Mysql: Konsep mudah untuk pembelajaran mudah Mysql: Konsep mudah untuk pembelajaran mudah Apr 10, 2025 am 09:29 AM

MySQL adalah sistem pengurusan pangkalan data sumber terbuka. 1) Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2) Operasi Asas: Masukkan, Kemas kini, Padam dan Pilih. 3) Operasi lanjutan: Sertai, subquery dan pemprosesan transaksi. 4) Kemahiran Debugging: Semak sintaks, jenis data dan keizinan. 5) Cadangan Pengoptimuman: Gunakan indeks, elakkan pilih* dan gunakan transaksi.

Cara Memastikan Ketersediaan MongoDB Tinggi di Debian Cara Memastikan Ketersediaan MongoDB Tinggi di Debian Apr 02, 2025 am 07:21 AM

Artikel ini menerangkan cara membina pangkalan data MongoDB yang sangat tersedia pada sistem Debian. Kami akan meneroka pelbagai cara untuk memastikan keselamatan data dan perkhidmatan terus beroperasi. Strategi Utama: Replicaset: Replicaset: Gunakan replika untuk mencapai redundansi data dan failover automatik. Apabila nod induk gagal, set replika secara automatik akan memilih nod induk baru untuk memastikan ketersediaan perkhidmatan yang berterusan. Sandaran dan Pemulihan Data: Secara kerap Gunakan perintah Mongodump untuk membuat sandaran pangkalan data dan merumuskan strategi pemulihan yang berkesan untuk menangani risiko kehilangan data. Pemantauan dan penggera: Menyebarkan alat pemantauan (seperti Prometheus, Grafana) untuk memantau status MongoDB dalam masa nyata, dan

MySQL: Pengenalan kepada pangkalan data paling popular di dunia MySQL: Pengenalan kepada pangkalan data paling popular di dunia Apr 12, 2025 am 12:18 AM

MySQL adalah sistem pengurusan pangkalan data relasi sumber terbuka, terutamanya digunakan untuk menyimpan dan mengambil data dengan cepat dan boleh dipercayai. Prinsip kerjanya termasuk permintaan pelanggan, resolusi pertanyaan, pelaksanaan pertanyaan dan hasil pulangan. Contoh penggunaan termasuk membuat jadual, memasukkan dan menanyakan data, dan ciri -ciri canggih seperti Operasi Join. Kesalahan umum melibatkan sintaks SQL, jenis data, dan keizinan, dan cadangan pengoptimuman termasuk penggunaan indeks, pertanyaan yang dioptimumkan, dan pembahagian jadual.

Mengapa menggunakan mysql? Faedah dan kelebihan Mengapa menggunakan mysql? Faedah dan kelebihan Apr 12, 2025 am 12:17 AM

MySQL dipilih untuk prestasi, kebolehpercayaan, kemudahan penggunaan, dan sokongan komuniti. 1.MYSQL Menyediakan fungsi penyimpanan dan pengambilan data yang cekap, menyokong pelbagai jenis data dan operasi pertanyaan lanjutan. 2. Mengamalkan seni bina pelanggan-pelayan dan enjin penyimpanan berganda untuk menyokong urus niaga dan pengoptimuman pertanyaan. 3. Mudah digunakan, menyokong pelbagai sistem operasi dan bahasa pengaturcaraan. 4. Mempunyai sokongan komuniti yang kuat dan menyediakan sumber dan penyelesaian yang kaya.

Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Kaedah Navicat untuk melihat kata laluan pangkalan data MongoDB Apr 08, 2025 pm 09:39 PM

Tidak mustahil untuk melihat kata laluan MongoDB secara langsung melalui Navicat kerana ia disimpan sebagai nilai hash. Cara mendapatkan kata laluan yang hilang: 1. Tetapkan semula kata laluan; 2. Periksa fail konfigurasi (mungkin mengandungi nilai hash); 3. Semak Kod (boleh kata laluan Hardcode).

Cara menyusun indeks mongoDB Cara menyusun indeks mongoDB Apr 12, 2025 am 08:45 AM

Indeks Penyortiran adalah sejenis indeks MongoDB yang membolehkan dokumen menyusun dalam koleksi oleh medan tertentu. Mewujudkan indeks jenis membolehkan anda menyusun hasil pertanyaan dengan cepat tanpa operasi penyortiran tambahan. Kelebihan termasuk penyortiran cepat, menimpa pertanyaan, dan penyortiran atas permintaan. Sintaks adalah db.collection.createIndex ({field: & lt; sort order & gt;}), di mana & lt; sort order & gt; adalah 1 (urutan menaik) atau -1 (perintah menurun). Anda juga boleh membuat indeks penyortiran berbilang bidang yang menyusun pelbagai bidang.

MySQL: Pengenalan mesra pengguna ke pangkalan data MySQL: Pengenalan mesra pengguna ke pangkalan data Apr 10, 2025 am 09:27 AM

Pemasangan dan operasi asas MySQL termasuk: 1. Muat turun dan pasang MySQL, tetapkan kata laluan pengguna root; 2. Gunakan arahan SQL untuk membuat pangkalan data dan jadual, seperti CreateTatabase dan Createtable; 3. Melaksanakan operasi CRUD, gunakan memasukkan, pilih, kemas kini, padamkan arahan; 4. Buat indeks dan prosedur tersimpan untuk mengoptimumkan prestasi dan melaksanakan logik kompleks. Dengan langkah -langkah ini, anda boleh membina dan mengurus pangkalan data MySQL dari awal.

See all articles