Koa Js: 2부 - SQL 데이터베이스를 서버에 연결

11716 단어
시작하기 전에 Koa에 대한 경험이 없는 경우 이 자습서를 읽었는지 확인하십시오.

이 자습서를 따라 하려면 here에서 파일을 복제할 수 있습니다.

코아 SQL 서버



이제 서버가 가동되어 실행 중이므로 다음 단계는 서버를 데이터베이스에 연결하는 것입니다. 이 부분에서는 SQL(postgres) 데이터베이스를 사용합니다.

시작하기 전에 postgres이 설치되어 있는지 확인하십시오.

psql --version


설정



이 튜토리얼에서는 postgres와 함께 sequenceize를 사용할 것입니다. 이제 postgres를 설치하고 속편화하는 것으로 시작하겠습니다.

npm i pg sequelize


모델



Postgres가 설치되면 모델 폴더를 만들 수 있습니다.

그런 다음 index.js 파일과 첫 번째 모델이라는 두 개의 파일을 만들고 이름을 event.models.js로 지정하겠습니다.

다음 명령을 실행해 보겠습니다.

mkdir models
touch models/index.js
touch models/event.models.js


먼저 index.js 파일에 다음 코드를 추가해 보겠습니다.

const { Sequelize } = require('sequelize');

const settings = {
  host: 'localhost',
  dialect: 'postgres',
}

const sequelize = new Sequelize('DATABASE', 'USERNAME', 'PASSWORD', settings);

module.exports = sequelize;


이 파일은 우리를 postgres 데이터베이스에 연결합니다.

'DATABASE', 'USERNAME', 'PASSWORD'를 자신의 postgres 자격 증명으로 바꾸십시오.

이제 event.models.js에 다음을 추가해 보겠습니다.

const sequelize = require('.')
const { DataTypes } = require('sequelize');

const Event = sequelize.define('Events', {
  name: DataTypes.STRING,
  adultsOnly: DataTypes.BOOLEAN,
  attendees: DataTypes.INTEGER,
  description: DataTypes.STRING,
});

Event.sync();

module.exports = Event


그래서 우리는 무엇을 했습니까? 방금 Events라는 모델을 만들고 다음 스키마를 정의했습니다.

  • 이름 - 이벤트 이름을 나타내는 문자열입니다.

  • 성인 전용 - 부울 필드입니다.

  • 참석자 - 참석자 수를 나타내는 숫자입니다
  • .

  • 설명 - 문자열 필드이기도 합니다.

  • 컨트롤러 업데이트



    이제 event.controllers.js 파일의 가져오기를 다음과 같이 변경해야 합니다.

    const events = require('../models/events.models');
    


    포스트 요청



    event.models.js에서 게시 요청을 업데이트하겠습니다.

    post 요청은 요청 본문을 가져와서 postgres 데이터베이스에 객체를 생성합니다.
  • 성공적인 요청은 '이벤트 생성됨!'을 반환합니다.
  • 실패한 요청은 상태 500 오류를 반환합니다.

  • const postEvent = async ctx => {
        try {
            const { name, adultsOnly, attendees, description } = ctx.request.body;
    
            await Event.create({ name, adultsOnly, attendees, description });
    
            ctx.body = 'Event Created!'
            ctx.status = 201;
        } catch (err) {
            ctx.status = 500;
            throw (err)
        }
    };
    


    우편 배달부의 다음 끝점에 항목을 게시해 보십시오http://127.0.0.1:8000/post_event.



    get 요청으로 넘어갑시다!

    요청 받기



    event.models.js 파일에서 getEvents 컨트롤러를 업데이트하겠습니다.

    함수를 비동기로 만들고 postgres에 저장된 모든 이벤트 항목을 반환하도록 함수를 업데이트해야 합니다.

    const getEvents = async ctx => {
        try {
            const foundEvents = await Event.findAll();
            ctx.body = foundEvents;
            ctx.status = 200;
        } catch (err) {
            ctx.body = err;
            ctx.status = 500;
        }
    };
    


    다음 엔드포인트에 대한 get 요청을 시도해 보겠습니다. http://127.0.0.1:8000/events_list .

    이것이 올바르게 작동하면 다음을 얻을 수 있습니다.

    [
        {
            "id": 1,
            "name": "test event",
            "adultsOnly": false,
            "attendees": 100,
            "description": "test event description",
            "createdAt": "TIME OF CREATION",
            "updatedAt": "TIME OF CREATION"
        }
    ]
    


    그게 다야!

    요약


  • 프로젝트에 모델을 추가했습니다.
  • models/index.js는 우리를 서버에 연결하고 각 모델은 색인 파일을 호출합니다.
  • 게시 및 요청을 위해 컨트롤러를 모델에 연결했습니다.

  • 이 튜토리얼의 전체 코드는 here에서 찾을 수 있습니다.

    좋은 웹페이지 즐겨찾기