Reka Bentuk Aras Rendah: Sistem Pengundian - Menggunakan Nodejs

WBOY
Lepaskan: 2024-08-31 13:03:07
asal
194 orang telah melayarinya

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 기사를 참조하세요

데이터베이스 설정, Express와 함께 Node.js를 사용한 API 구현, MySQL과의 상호 작용을 포함하여 전체 프로세스를 세부 단계로 나누어 보겠습니다. 우리가 다룰 내용은 다음과 같습니다.

데이터베이스 설정

먼저 MySQL 데이터베이스의 스키마를 정의하고 필요한 테이블을 생성하겠습니다.

MySQL 데이터베이스 스키마

으아악
  • 설문조사 테이블: 고유 식별자, 질문 및 생성 타임스탬프와 함께 설문조사 정보를 저장합니다.

  • 옵션 테이블: poll_id를 통해 연결된 설문조사와 관련된 옵션을 저장합니다.

  • 투표 테이블: 각 투표를 기록하고 설문조사, 옵션, 사용자에 연결합니다.

    폴링 시스템용 ERD

엔티티:

  1. 설문조사: poll_id 및 질문과 같은 속성을 사용하여 설문조사 자체를 나타냅니다.
  2. 옵션: option_id 및 option_text와 같은 속성을 사용하여 각 설문 조사에 사용할 수 있는 옵션을 나타냅니다.
  3. 투표: vote_id, user_id 및 타임스탬프와 같은 속성을 사용하여 사용자가 투표한 투표를 나타냅니다.

관계:

  1. 일대다설문조사와 옵션 간: 각 설문조사에는 여러 옵션이 있을 수 있습니다.
  2. 다대일투표와 옵션 간: 각 투표는 하나의 옵션과 연결됩니다.
  3. 다대일투표와 투표 간: 각 투표는 특정 투표와 연결됩니다.

ERD에 대한 설명은 다음과 같습니다.

  1. 여론조사표:

    • poll_id(기본 키)
    • 질문
    • created_at
  2. 옵션 표:

    • option_id(기본 키)
    • poll_id(polls.poll_id를 참조하는 외래 키)
    • 옵션_텍스트
  3. 투표 테이블:

    • vote_id(기본 키)
    • poll_id(polls.poll_id를 참조하는 외래 키)
    • option_id(options.option_id를 참조하는 외래 키)
    • 사용자_ID
    • created_at

관계는 항목 간의 선으로 표시됩니다.

  • 설문조사옵션: 하나의 설문조사에 여러 가지 옵션이 있을 수 있습니다.
  • 옵션투표: 하나의 옵션이 여러 표를 받을 수 있습니다.
  • 설문조사투표: 하나의 설문조사가 여러 표를 받을 수 있습니다.

백엔드 설정

Express와 MySQL을 사용하여 Node.js 프로젝트를 설정해 보겠습니다.

1단계: 프로젝트 초기화

으아악
  • express: Node.js용 웹 프레임워크
  • mysql2: Node.js용 MySQL 클라이언트
  • dotenv: 환경변수 관리용.

2단계: 프로젝트 구조

프로젝트의 기본 구조 만들기:

으아악

API 구현

1단계: 데이터베이스 연결

파일 - db/db.js

으아악

2단계: 환경 변수

파일 - .env

으아악

3단계: 폴링 컨트롤러

파일 - 컨트롤러/pollController.js

이 파일은 폴링 시스템에 필요한 모든 CRUD 작업을 구현합니다.

으아악

4단계: 경로 폴링

파일 - 경로/pollRoutes.js
각 API 엔드포인트에 대한 경로를 정의합니다.

으아악

5단계: 서버 진입점

파일 - index.js
마지막으로 서버를 설정하세요.

으아악

오류 처리

각 방법에는 잘못된 입력, 중복 투표, 설문조사 또는 옵션 누락, 서버 오류 등 일반적인 문제에 대한 오류 처리가 포함되어 있습니다.

  • Pengesahan Input: Semakan dilakukan untuk memastikan bahawa input adalah sah, seperti menyemak sama ada medan yang diperlukan ada dan diformat dengan betul.
  • Pengurusan Transaksi: Untuk operasi yang melibatkan berbilang pertanyaan (cth., mencipta atau mengemas kini tinjauan pendapat), transaksi digunakan untuk memastikan konsistensi.

Menguji

Uji setiap titik akhir menggunakan alatan seperti Posmen atau curl.

  • Buat Tinjauan: POST /api/polls dengan badan JSON yang mengandungi soalan dan pelbagai pilihan.
  • Kemas kini Tinjauan: PUT /api/polls/:pollId dengan soalan dan pilihan yang dikemas kini.
  • Padam Pungutan Suara: PADAM /api/polls/:pollId.
  • Undi dalam Tinjauan: POST /api/polls/:pollId/undi dengan userId dan pilihan.
  • Lihat Keputusan Pungutan Suara: DAPATKAN /api/polls/:pollId/results.

Kesimpulan

Ini ialah pelaksanaan modular komprehensif sistem pengundian dalam talian menggunakan Node.js, Express dan MySQL. Ia mengendalikan operasi asas CRUD dan memastikan konsistensi data dengan transaksi. Ia juga termasuk pengendalian ralat asas untuk menjadikan API lebih mantap dan mesra pengguna.

Sila rujuk artikel Reka Bentuk Asas Sistem Pengundian Aras Rendah - I

Lagi Butiran:

Dapatkan semua artikel berkaitan reka bentuk sistem
Hastag: SystemDesignWithZeeshanAli

reka bentuk sistemdenganzeeshanali

Git: https://github.com/ZeeshanAli-0704/SystemDesignWithZeeshanAli

Atas ialah kandungan terperinci Reka Bentuk Aras Rendah: Sistem Pengundian - Menggunakan Nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!