전체 글 527

[Node.js] Sequelize 다루기

ORM(Object-Relational Mappingds)은 객체 지향 패러다임을 활용하여 관계형 데이터 베이스(RDB)의 데이터를 조작하는 기술이다. 이를 활용하면 쿼리를 작성하지 않고도 객체의 메서드를 활용하는 것처럼 쿼리 로직을 작성할 수 있다. Sequelize는 MySQL, PostgreSQL, MariaDB 등 많은 RDBMS를 지원하고 Promise 기반으로 구현되었기 때문에 비동기 로직을 편리하게 작성할 수 있다. 설치 및 초기화 이 포스팅에선 MySQL과 Sequelize를 사용하여 간단한 CRUD 작업을 해보기로 한다. 따라서 그에 맞는 패키지들을 설치해주어야 한다. yarn init -y yarn add mysql2 sequelize yarn add global sequelize-cl..

백엔드/Sequelize 2021.11.17

im-sprint-cmarket-database

이번 스프린트에서는 쇼핑몰 애플리케이션 Cmarket의 데이터베이스를 구축합니다. 모든 요청은 반드시 데이터베이스를 이용해야 합니다. controllers/index.js 더보기 const models = require('../models') module.exports = { items: { get: (req, res) => { models.items.get((error, result) => { if (error) { res.status(500).send('Internal Server Error') } else { // GET /items 요청에 성공했을 경우 상태코드 200을 보내야합니다. res.status(200).json(result) } }) }, }, // orders controller에는 ..

req.params vs req.query (axios, express)

req.params vs req.query 서버에서 req.params로 받을 수 있는 것은, 이미 예약된(?) 값이라고 생각 할 수 있다. 예를 들어 서버의 routing코드가 아래와 같다고 하자. post.get("/:id/:name", function1); 그리고 데이터를 요청하는 클라이언트 측의 axios가 아래와 같다고 하자. await axios({ method: "get", url: `www.example.com/post/1/jun`, params: { title: 'hello!' }, }) 이 경우 전송되는 url은 ‘www.example.com/post/1/jun?title=hello!’ 이다. 이럴 경우 서버에서 req.params와 req.query를 출력하면 결과값은 어떻게 나올까?..

백엔드/expressjs 2021.11.17

MVC

Achievement Goal MVC 패턴 MVC 디자인 패턴과 같이, 코드를 각각 다른 부분으로 나누어 작성해야 하는 이유를 이해할 수 있다. 프로그래밍을 할 때 하나의 코드베이스에서 모든 것을 하는 것이 아닌 정돈된, 의도된 코드를 특정 역할에서 할 수 있다는 장점이 있다. Model, View, Controller가 각각 어떤 역할을 하는지 이해할 수 있다. Model-데이터의 정보를 가지고 있다. 데이터베이스와 연결이 되어 데이터를 가지고 올 수 있다. 데이터베이스와 이야기 하고 가지고 있는 데이터로 컨트롤러와 이야기 한다. view와는 이야기하지 않는다. View-유저가보는 화면을 보여주게 한다. 컨트롤러와 이야기 한다. view와는 이야기 하지 않는다. Controller-뷰에서 일어나는 액션..

백엔드/MVC 2021.11.16

im-sprint-learn-sql---part4.js

/* ---------------------------------------------------------------------------------------------- TODO: Q 4-1. user 테이블에 존재하는 모든 컬럼을 포함한 모든 데이터를 확인하기 위한 SQL을 작성해주세요. */ const PART4_1 = `SELECT * FROM user`; /* ---------------------------------------------------------------------------------------------- TODO: Q 4-2. user 테이블에 존재하는 모든 데이터에서 name 컬럼만을 확인하기 위한 SQL을 작성해주세요. */ const PART4_2 = `SELEC..

im-sprint-learn-sql---part3.js

// 유어클래스의 requirement를 참조하여, schema.sql에 알맞은 테이블을 구성해주세요. /* TODO: Q 3-1. 현재 있는 데이터베이스에 존재하는 모든 테이블 정보를 보기위한 SQL을 작성해주세요. */ const PART3_1 = `show databases`; /* TODO: Q 3-2. user 테이블의 구조를 보기위한 SQL을 작성해주세요. - 요구사항에 맞는 user 테이블을 작성해야만, 테스트를 통과합니다. */ const PART3_2 = `DESC user`; /* TODO: Q 3-3. content 테이블의 구조를 보기위한 SQL을 작성해주세요. - 요구사항에 맞는 content 테이블을 작성해야만, 테스트를 통과합니다. */ const PART3_3 = `DESC ..

IP와 포트

IP address 네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP address(Internet Protocol address, IP 주소)라고 합니다. 이번 콘텐츠에서는 네트워크 상에서 특정 PC를 나타내는 IP 주소와 그 주소에 진입할 수 있는 정해진 통로, PORT(포트)에 대해 학습합니다. 네 덩이의 숫자로 구분된 IP 주소체계를 IPv4라고 합니다. IPv4는 Internet Protocol version 4의 줄임말로, IP 주소체계의 네 번째 버전을 뜻합니다. 터미널에서 간단한 명령어로 IPv4 주소를 확인할 수 있습니다. 터미널을 열고, nslookup codestates.com 을 입력하면, 다음과 같은 화면을 만날 수 있습니다. IPv4는 각 덩어리마다 0부터 255까지 나..

URL과 URI

URL은 Uniform Resource Locator의 줄임말로, 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타냅니다. URL은 scheme, hosts, url-path로 구분할 수 있습니다. 가장 먼저 작성하는 scheme은 통신 방식(프로토콜)을 결정합니다. 일반적인 웹 브라우저에서는 http(s)를 사용합니다. hosts는 웹 서버의 이름이나 도메인, IP를 사용하며 주소를 나타냅니다. url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타냅니다. URI는 Uniform Resource Identifier의 줄임말로, 일반적으로 URL의 기본 요소인 scheme, hosts, url-path에 더..