목차
- 데이터베이스 설정
- MySQL 데이터베이스 스키마
- 투표시스템 ERD
- 백엔드 설정
- 1단계: 프로젝트 초기화
- 2단계: 프로젝트 구조
- API 구현
- 1단계: 데이터베이스 연결(db/db.js)
- 2단계: 환경 변수(.env)
- 3단계: 폴링 컨트롤러(controllers/pollController.js)
- 4단계: 경로 폴링(routes/pollRoutes.js)
- 5단계: 서버 진입점(index.js)
- 오류 처리
- 테스트
- 결론
폴링 시스템 기본 저수준 설계 - I 기사를 참조하세요
데이터베이스 설정, Express와 함께 Node.js를 사용한 API 구현, MySQL과의 상호 작용을 포함하여 전체 프로세스를 세부 단계로 나누어 보겠습니다. 우리가 다룰 내용은 다음과 같습니다.
데이터베이스 설정
먼저 MySQL 데이터베이스의 스키마를 정의하고 필요한 테이블을 생성하겠습니다.
MySQL 데이터베이스 스키마
으아악
설문조사 테이블: 고유 식별자, 질문 및 생성 타임스탬프와 함께 설문조사 정보를 저장합니다.
옵션 테이블: poll_id를 통해 연결된 설문조사와 관련된 옵션을 저장합니다.
투표 테이블: 각 투표를 기록하고 설문조사, 옵션, 사용자에 연결합니다.
폴링 시스템용 ERD
엔티티:
- 설문조사: poll_id 및 질문과 같은 속성을 사용하여 설문조사 자체를 나타냅니다.
- 옵션: option_id 및 option_text와 같은 속성을 사용하여 각 설문 조사에 사용할 수 있는 옵션을 나타냅니다.
- 투표: vote_id, user_id 및 타임스탬프와 같은 속성을 사용하여 사용자가 투표한 투표를 나타냅니다.
관계:
- 일대다설문조사와 옵션 간: 각 설문조사에는 여러 옵션이 있을 수 있습니다.
- 다대일투표와 옵션 간: 각 투표는 하나의 옵션과 연결됩니다.
- 다대일투표와 투표 간: 각 투표는 특정 투표와 연결됩니다.
ERD에 대한 설명은 다음과 같습니다.
여론조사표:
- poll_id(기본 키)
- 질문
- created_at
옵션 표:
- option_id(기본 키)
- poll_id(polls.poll_id를 참조하는 외래 키)
- 옵션_텍스트
투표 테이블:
- 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
마지막으로 서버를 설정하세요.
으아악
오류 처리
각 방법에는 잘못된 입력, 중복 투표, 설문조사 또는 옵션 누락, 서버 오류 등 일반적인 문제에 대한 오류 처리가 포함되어 있습니다.
- 입력 유효성 검사: 필수 필드가 있고 형식이 올바른지 확인하는 등 입력이 유효한지 확인하는 검사가 수행됩니다.
- 트랜잭션 관리: 여러 쿼리가 포함된 작업(예: 설문 조사 생성 또는 업데이트)의 경우 일관성을 보장하기 위해 트랜잭션이 사용됩니다.
테스트
Postman 또는 컬과 같은 도구를 사용하여 각 엔드포인트를 테스트합니다.
- 설문조사 만들기: 질문과 옵션 배열이 포함된 JSON 본문이 포함된 POST /api/polls.
- 설문조사 업데이트: 업데이트된 질문과 옵션이 포함된 PUT /api/polls/:pollId.
- 설문조사 삭제: DELETE /api/polls/:pollId.
- 설문조사 투표: userId 및 옵션을 사용하여 POST /api/polls/:pollId/vote.
- 설문조사 결과 보기: GET /api/polls/:pollId/results.
결론
이것은 Node.js, Express 및 MySQL을 사용하는 온라인 폴링 시스템의 포괄적인 모듈식 구현입니다. 기본 CRUD 작업을 처리하고 트랜잭션과의 데이터 일관성을 보장합니다. 또한 API를 더욱 강력하고 사용자 친화적으로 만들기 위한 기본 오류 처리도 포함되어 있습니다.
폴링 시스템 기본 저수준 설계 - I 기사를 참조하세요
자세한 내용:
시스템 설계 관련 모든 기사 보기
Hastag: SystemDesignWithZeeshanAli
zeeshanali와 함께하는 시스템 디자인
Git: https://github.com/ZeeshanAli-0704/SystemDesignWithZeeshanAli
위 내용은 저수준 설계: 폴링 시스템 - Nodejs 사용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!