NestJs MongooseによるMongoDB操作の方法

4720 ワード

最近はNestJsという枠組みを学び始めました。学習コストは他のフレームよりかなり高いです。
その登録構成は比較的複雑です。勉強を始めたら、どことどこが分かりません。しかし、これは他のフレームよりも厳密な表現です。大型プロジェクトの安定と丈夫な使用を保証しました。
node基礎フレームExpressとKooaを勉強している時。データベースの操作は常にSQL文を作成するために行われています。何を書くべきですか?これはとても堅苦しくて融通がきかないです。NestJsはOOP思想プログラミング(NestJsはType Scriptを使ってもいいです。OOP思想です。)であることを知ってから、データベースに対する操作はオブジェクト形式で表現できると分かりました。データベース内の各テーブルは、Nestフレーム内のオブジェクトとして見なされます。このようにデータベースの操作に対してとても柔軟に見えます。
例えば:(これは任意のテーブルの構成です。)
在这里插入图片描述
NestJsに作成されたオブジェクトを見ることができます。
在这里插入图片描述
そうすると、データベースのテーブルごとの操作がとても簡単になります。
ここでは、リンクしたmongoDB操作を例に挙げます。
公式文書によるモングースの使用
まずインストールに必要な依存性です。

npm install --save @nestjs/mongoose mongoose
タオバオミラーを追加できます。

Cregistry=https://registry.npm.taobao.org
これはもうタクシーに慣れましたので、使いやすいです。ダウンロード速度は比較的速くなります。
インストールが完了したら、私たちはap.module.tsに配置を追加します。
app.module.ts
在这里插入图片描述
imports:[]に対応する構成を追加します。

MongooseModule.forRoot(‘mongodb://localhost/test')
//   MongoDB   (      )
        
import { Module } from ‘@nestjs/common';
import { MongooseModule } from ‘@nestjs/mongoose';
この時保存してコンソールで見ることができます。
Deprecation Warning:current URL string parser is deprecated、and will be removed in a future version.To use the new parser、pass option{useNewUrlParser:true}to MongoClint.net
このように似た言葉です。リンクが成功したということです。
次に模型に注入する(Schema)
あなたの対応するモジュールフォルダにschemaフォルダを作成します。x.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端=>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.co ntroller.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操作MongoDBの内容については、以前の文章を検索したり、下記の関連記事を見たりしてください。これからもよろしくお願いします。