最近、NestJs フレームワークを学び始めました。学習コストは他のフレームワークよりもはるかに高くなります。 ノードの基本フレームワーク Express と Koa を学習する場合。データベース操作は常に SQL ステートメントを記述することによって実装されてきました。必要なことは何でも書いてください。これは非常に厳格で柔軟性に欠けるように思えます。その後、NestJs が OOP 指向のプログラミングであること (NestJs は OOP 指向の TypeScript も使用できます) を知り、データベース操作をオブジェクトの形式で表現できることに気付きました。データベース内の各テーブル (スキーマ) は、Nest フレームワーク内のオブジェクトと見なすことができます。これにより、データベース操作が非常に柔軟になります。 例えば: (これは任意のテーブルの構造です) NestJsではオブジェクトとして見ることができます これにより、データベース内の各テーブルを操作するのが非常に簡単になります。 公式ドキュメントに従ってmongooseを使用する まず、必要な依存関係をインストールします npm をインストール --save @nestjs/mongoose mongoose Taobaoミラーを追加できます: –レジストリ=https://registry.npm.taobao.org 私はこれに非常に習熟しており、使用すると非常に便利です。ダウンロード速度が大幅に速くなります インストールが完了したら、app.module.tsに設定を追加します。
対応する設定をインポートに追加します:[] MongooseModule.forRoot('mongodb://localhost/test') // 以下は MongoDB の場所です (必要に応じて) 対応する依存関係を追加します。import { Module } from '@nestjs/common'; '@nestjs/mongoose' から MongooseModule をインポートします。 保存するとコンソールで確認できます 次にモデル(スキーマ)を挿入します たとえば、私の場合はusers/schemas/users.schema.tsです。 'mongoose' から * を mongoose としてインポートします エクスポートconst UserSchema = new mongoose.Schema( { id: 番号、 名前: 文字列、 導入: 文字列、 headurl: 文字列、 bigurl: 文字列、 ユーザー名: 文字列、 パスワード: 文字列、 }, { コレクション: 'musicers'、バージョンキー: false }, ) これは上図のテーブル構造に対応します(コレクション:MongoDB ではテーブルとみなすことができます)。 '@nestjs/common' からモジュールをインポートします。 '@nestjs/mongoose' から { MongooseModule、getModelToken } をインポートします。 './users.controller' から {UsersController} をインポートします。 './services/users.service' から {UsersService} をインポートします。 './schemas/users.schemas' から { UserSchema } をインポートします。 @モジュール({ 輸入: [ //ここに設定を追加します。対応するインポート モジュール (内部のブラケット構造に注意してください。邪魔にならないようにしてください。私はここで長い間行き詰まっていました) MongooseModule.forFeature([ { 名前: 'User'、スキーマ: UserSchema } ]) ]、 コントローラ: [UsersController], プロバイダー: ユーザーサービス、 ]、 }) クラスUsersModuleをエクスポートします{} この設定後。サービス面でも運営できます
検索してテストしてみましょう 'mongoose' から {Model} をインポートします。 '@nestjs/common' から Injectable をインポートします。 '@nestjs/mongoose' から InjectModel をインポートします。 '../interface/users.interface' から { User } をインポートします。 '../interface/user-service.interface' から { IUserService } をインポートします。 @インジェクタブル() エクスポートクラスUsersServiceはIUserServiceを実装します{ コンストラクター(@InjectModel('User') プライベート読み取り専用 userModel: Model<User>) {} プライベート静的ユーザー:User[] = [ ] 非同期findAll():Promise<User[]>{ //UsersService.users を返す this.userModel.find({}) を待機して戻ります。 //(ここですべてを見つけるためにテストします) } }
@Controller('ユーザー') クラスUsersControllerをエクスポートします。 コンストラクター(プライベート読み取り専用ユーザーサービス: UsersService) { } @Get('getall') // @UseGuards(AuthGuard('jwt')) 非同期findAll():Promise<User[]> { this.userservice.findAll() を待つ } } インターフェイスを開きます。ここでは、main.ts で 3001 がカスタマイズされています。ご自身の状況に合わせて変更していただければ、 結果が出ました 出力が完了しました。その他の操作も同様の手順に従って実行されます。 以上で、Mongoose with NestJs を使って MongoDB を操作する方法についての記事は終了です。MongoDB を NestJs で操作する方法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Docker ログが多すぎてディスクがいっぱいになる場合の対処方法
>>: MySQL 5.7 のキーワードと予約語の詳細な説明
目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...
この効果と同様に、方法も非常に簡単です。ヘッダーに次のように記述します: <link rel=...
最近、ポップアップ広告に取り組んでいました。デフォルト ページには z-index が設定されていな...
この記事では、ログイン認証コードを実装するためのvueの具体的なコードを例として紹介します。具体的な...
forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...
1. Vueルーティングの権限制御には一般的に2つの方法がありますa. ルーティングメタ情報(メタ)...
目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...
【1】<i></i>タグと<em></em>タグ同じ...
ダウンロードダウンロードアドレス: https://dev.mysql.com/downloads/...
コンポーネントが詳細になるにつれて、複数のコンポーネントが状態を共有する状況に遭遇するでしょう。Vu...
背景あっという間に忙しい一年が終わり、毎年恒例のイベントの時期がやってきます。お祭り気分を演出するに...
目次1. 小道具親 >>> 子 (Props)子 >>> 親 (...
目次1. 親子コンポーネント通信2. クロスレベルコンポーネント通信1. レイヤーごとに値を渡す2....
最近、プロジェクトで input size 属性と maxlength 属性を使用しました。以前は、...
今回はレイアウトを中心に学習しますが、これは基本的なHTMLタグのほとんどにも存在するため、比較的簡...