低レベル設計: ポーリング システム - Nodejs の使用

WBOY
リリース: 2024-08-31 13:03:07
オリジナル
194 人が閲覧しました

Low-Level Design: Polling System - Using Nodejs

目次

  1. データベースのセットアップ
    • MySQL データベース スキーマ
    • ポーリング システムの ERD
  2. バックエンドのセットアップ
    • ステップ 1: プロジェクトを初期化する
    • ステップ 2: プロジェクトの構造
  3. APIの実装
    • ステップ 1: データベース接続 (db/db.js)
    • ステップ 2: 環境変数 (.env)
    • ステップ 3: コントローラーをポーリング (controllers/pollController.js)
    • ステップ 4: ルートをポーリングする (routes/pollRoutes.js)
    • ステップ 5: サーバー エントリ ポイント (index.js)
  4. エラー処理
  5. テスト
  6. 結論

「ポーリング システムの基本的な低レベル設計 - I

」の記事を参照してください。

データベースのセットアップ、Node.js と Express を使用した API 実装、MySQL との対話など、プロセス全体を詳細な手順に分けてみましょう。以下について説明します:

データベースのセットアップ

まず、MySQL データベースのスキーマを定義し、必要なテーブルを作成します。

MySQL データベース スキーマ

リーリー
  • 投票テーブル: 一意の識別子、質問、作成タイムスタンプを含む投票情報を保存します。

  • オプション テーブル: 投票に関連付けられたオプションを格納し、poll_id を介してリンクされます。

  • 投票テーブル: 各投票を記録し、投票、オプション、ユーザーにリンクします。

    ポーリングシステム用ERD

エンティティ:

  1. Polls: 投票自体を、poll_id や question などの属性で表します。
  2. オプション: 各投票で利用可能なオプションを、option_id や option_text などの属性で表します。
  3. 投票: ユーザーが投じた投票を、vote_id、user_id、タイムスタンプなどの属性で表します。

関係:

  1. 投票とオプションの間の1 対多: 各投票には複数のオプションを含めることができます。
  2. 投票とオプション間の多対 1: 各投票は 1 つのオプションに関連付けられます。
  3. 投票と投票の間の多対 1: 各投票は特定の投票にリンクされています。

ERD の説明は次のとおりです:

  1. 投票表:

    • poll_id(主キー)
    • 質問
    • 作成場所
  2. オプション テーブル:

    • option_id(主キー)
    • poll_id(polls.poll_id を参照する外部キー)
    • オプションテキスト
  3. 投票テーブル:

    • 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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!