책/Node.js 교과서(16)
-
[8장] mongoDB/ODM
1. ODM; Object Document Mapping 시퀄라이즈같은 ORM과 유사하게, OOP의 객체와 NoSQL의 도큐먼트를 자동으로 매핑하는 기술을 말한다. 그리고 몽고db를 위한 ODM으로 몽구스(mongoose)가 있다. 사실 몽고디비 자체가 자바스크립트를 기반으로 하기 때문에 몽구스를 반드시 써야 하는 것은 아니다. 다만 몽구스가 몇몇 보완점들이 있기에 쓰는 것뿐으로 몽구스 없다고 몽고디비를 못쓸 이유 따윈 없다. 스키마(schema) 생성 기능 몽고디비는 어떤 자료형이든 자유롭게 데이터를 넣을 수 있다. 하지만 그게 문제가 될 가능성도 있는데, 몽구스는 스키마를 생성해 제약 조건을 달아줘서 노드 서버 단에서 데이터를 필터링할 수 있게 된다. JOIN 기능 몽고디비에선 MySQL처럼 JOIN..
2022.05.22 -
[8장] mongoDB
1. SQL vs NoSQL(Not only SQL) 2. DB 및 컬렉션 생성 2.1 데이터베이스 생성 # use [데이터베이스명] > use nodejs switched to db nodejs // 데이터베이스 목록 확인 > show dbs admin 0.000GB config 0.000GB local 0.000GB // 현재 사용중인 DB 확인 > db nodejs 2.2 컬렉션 생성 사실 컬렉션은 따로 생성안해도 도큐먼트를 넣는 순간 자동생성 되기는 한다. 뭐 어쨌든... # db.createCollection( [컬렉션 이름] ) > db.createCollection('users') { "ok" : 1 } > db.createCollection('comments') { "ok" : 1 } > ..
2022.05.22 -
[7장] MySQL/ORM 관계설정
이전 글에서 모델간 관계를 설정해주는 일이 매우 중요하다고 설명했다. 예를 들어, 인스타에 가서 '존잘남'을 검색했다고 치자. 애플리케이션은 '존잘남' 이란 유저 한명을 표현하기 위해 아래와 같은 데이터들을 불러올 것이다. (더 있을 수도 있겠다만) '존잘남' 유저 1명이 쓴 여러개의 게시글 '존잘남' 유저를 팔로잉하는 여러명의 유저들 '존잘남' 유저가 팔로우하는 여러명의 유저들 '존잘남' 유저가 쓴 여러개의 게시글 각 게시글에 달린 여러개의 해시태그 그럼 이제 모델간의 관계가 어떻게 지정되는지 알아보자 1. 1:N 관계 눈으로 보면 쉽게 이해가 되는데 이 관계를 코드로 딱 정립해주려면 뭐가 필요할까? 생각나는대로 적어보자. 테이블에서 누가 코멘트를 썼는지는 commenter에 적혀있다 commenter..
2022.05.22 -
[7장] MySQL/ORM
1. ORM이란? (Object Relational Mapping, 객체-관계 매핑) OOP(Object Oriented Programming)에서 쓰이는 객체와 RDB(Relational DataBase)에서 쓰이는 테이블을 자동으로 매핑(연결)하는 것을 뜻한다. 애초에 둘은 서로 호환될 것을 염두에 두고 만든 것이 아니기 때문에, ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 간접적으로 데이터베이스를 조작하는 것이다. npm i sequelize sequelize-cli mysql2 패키지를 설치하고 본격적으로 시작해보자. ※ sequelize-cli 패키지를 설치하다보면 ○○○○-cli 라는 모듈도 설치할 때가 있다. 이러한 애들은 명령줄 인터페이스(CLI; Command L..
2022.05.08 -
[7장] MySQL
지금까진 모든 데이터를 변수에, 즉 컴퓨터 메모리에 저장해왔다. 이 말은 서버 종료시 메모리가 정리되면서 저장했던 데이터도 날아간다는 뜻이다. 이를 방지하기 위해선 데이터베이스를 사용해야 한다. 물론 이 책이 데이터베이스를 깊게 다루는 책은 아니므로 '적당히' 필요한 정도로만 알아보자. 1. 데이터베이스(DB) 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음. 이러한 데이터 베이스를 관리하는 시스템을 DBMS; DataBase Management System 라고 부른다. 보통 서버의 하드디스크나 SSD 등의 저장 매체에 데이터를 저장한다. DBMS 중에서 RDBMS라 부르는 관계형 DBMS가 많이 사용되는데, 대표적인 예로 Oracle, MySQL, MSSQL등이 있다. ..
2022.05.07 -
[6장] Express / Router
Express에선 라우팅을 깔끔하게 관리할 수 있도록 도와주는 라우터 미들웨어를 제공한다. 미들웨어이긴 하지만 사실상 Application과 유사한 기능을 몇몇 갖추고있다. 이게 무슨소리인가 싶을텐데, const app = express( ); 로 선언했던 app 객체와 기능적으로 비슷한 부분이 많다는 뜻으로, 라우팅 기능은 당연하고 app.use( ) 메서드도 쓸 수 있고 이거저거 할 수 있는게 많다는 뜻. 1. 라우팅 기본 이런저런 기능을 덧붙이기에 앞서 라우팅을 깔끔하게 관리해보자. app.js에서 라우팅하는 코드를 줄줄이 짜는게 아닌, routes 폴더를 따로 생성 후 요청 경로에 맞는 라우트 파일을 만들어 별도 관리하는 것이다. # express.Router( [options] ) - caseS..
2022.05.07