目次
- データベースのセットアップ
- MySQL データベース スキーマ
- ポーリング システムの ERD
- バックエンドのセットアップ
- ステップ 1: プロジェクトを初期化する
- ステップ 2: プロジェクトの構造
- APIの実装
- ステップ 1: データベース接続 (db/db.js)
- ステップ 2: 環境変数 (.env)
- ステップ 3: コントローラーをポーリング (controllers/pollController.js)
- ステップ 4: ルートをポーリングする (routes/pollRoutes.js)
- ステップ 5: サーバー エントリ ポイント (index.js)
- エラー処理
- テスト
- 結論
「ポーリング システムの基本的な低レベル設計 - I
」の記事を参照してください。
データベースのセットアップ、Node.js と Express を使用した API 実装、MySQL との対話など、プロセス全体を詳細な手順に分けてみましょう。以下について説明します:
データベースのセットアップ
まず、MySQL データベースのスキーマを定義し、必要なテーブルを作成します。
MySQL データベース スキーマ
リーリー
投票テーブル: 一意の識別子、質問、作成タイムスタンプを含む投票情報を保存します。
オプション テーブル: 投票に関連付けられたオプションを格納し、poll_id を介してリンクされます。
投票テーブル: 各投票を記録し、投票、オプション、ユーザーにリンクします。
ポーリングシステム用ERD
エンティティ:
- Polls: 投票自体を、poll_id や question などの属性で表します。
- オプション: 各投票で利用可能なオプションを、option_id や option_text などの属性で表します。
- 投票: ユーザーが投じた投票を、vote_id、user_id、タイムスタンプなどの属性で表します。
関係:
- 投票とオプションの間の1 対多: 各投票には複数のオプションを含めることができます。
- 投票とオプション間の多対 1: 各投票は 1 つのオプションに関連付けられます。
- 投票と投票の間の多対 1: 各投票は特定の投票にリンクされています。
ERD の説明は次のとおりです:
投票表:
オプション テーブル:
- option_id(主キー)
- poll_id(polls.poll_id を参照する外部キー)
- オプションテキスト
投票テーブル:
- vote_id(主キー)
- poll_id(polls.poll_id を参照する外部キー)
- option_id(options.option_id を参照する外部キー)
- user_id
- 作成場所
関係はエンティティ間の線で表されます:
- 投票→オプション: 1 つの投票に多くのオプションを含めることができます。
- オプション→投票: 1 つのオプションに複数の投票を含めることができます。
- 投票→投票: 1 つの投票に複数の投票を含めることができます。
バックエンドのセットアップ
Express と MySQL を使用して Node.js プロジェクトをセットアップしましょう。
ステップ 1: プロジェクトを初期化する
リーリー
- express: Node.js の Web フレームワーク。
- mysql2: Node.js 用の MySQL クライアント。
- dotenv: 環境変数の管理用。
ステップ 2: プロジェクトの構造
プロジェクトの基本構造を作成します:
リーリー
APIの実装
ステップ 1: データベース接続
ファイル - db/db.js
リーリー
ステップ 2: 環境変数
ファイル - .env
リーリー
ステップ 3: コントローラーをポーリングする
ファイル -controllers/pollController.js
このファイルは、ポーリング システムに必要なすべての CRUD 操作を実装します。
リーリー
ステップ 4: ポーリング ルート
ファイル - Routes/pollRoutes.js
各 API エンドポイントのルートを定義します:
リーリー
ステップ 5: サーバーのエントリ ポイント
ファイル -index.js
最後に、サーバーをセットアップします:
リーリー
エラー処理
各メソッドには、無効な入力、重複投票、投票やオプションの欠落、サーバー エラーなどの一般的な問題に対するエラー処理が含まれています。
- 入力検証: 必須フィールドが存在し、適切にフォーマットされているかどうかのチェックなど、入力が有効であることを確認するためのチェックが実行されます。
- トランザクション管理: 複数のクエリを伴う操作 (ポーリングの作成または更新など) の場合、一貫性を確保するためにトランザクションが使用されます。
テスト
Postman やcurl などのツールを使用して各エンドポイントをテストします。
- 投票の作成: 質問とオプションの配列を含む JSON 本文を使用して /api/polls を POST します。
- 投票の更新: 更新された質問とオプションを含む /api/polls/:pollId を PUT します。
- 投票の削除: DELETE /api/polls/:pollId.
- 投票で投票: userId とオプションを使用して /api/polls/:pollId/vote を POST します。
- 投票結果の表示: GET /api/polls/:pollId/results.
結論
これは、Node.js、Express、MySQL を使用したオンライン投票システムの包括的なモジュール実装です。基本的な CRUD 操作を処理し、トランザクションとのデータの一貫性を保証します。 API をより堅牢で使いやすくするための基本的なエラー処理も含まれています。
「ポーリング システムの基本的な低レベル設計 - I
」の記事を参照してください。
詳細:
システム設計に関連するすべての記事を取得します
タグ: SystemDesignWithZeeshanAli
zeeshanali とのシステムデザイン
Git: https://github.com/ZeeshanAli-0704/SystemDesignWithZeeshanAli
以上が低レベル設計: ポーリング システム - Nodejs の使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。