노드
-
노드 시퀄라이즈 모델 만들기노드 2023. 4. 19. 19:09
//models/user.js const Sequelize = require('sequelize'); class User extends Sequelize.Model { static initiate(sequelize) { User.init({ name: { type: Sequelize.STRING(20), allowNull: false, unique: true, }, age: { type: Sequelize.INTEGER.UNSIGNED, allowNull: false, }, married: { type: Sequelize.BOOLEAN, allowNull: false, }, comment: { type: Sequelize.TEXT, allowNull: true, }, created_at: { type: ..
-
노드 시퀄라이즈 사용하기노드 2023. 4. 19. 09:58
시퀄라이즈 ORM SQL 작업을 쉽게 할 수 있도록 도와주는 라이브러리 ORM : Object Relational Mapping : 객체와 데이터를 매핑(1 대 1 짝지음) MySQL 외에도 다른 RDB(Maria, Postgre, SQLite, MSSQL)와도 호환된다. 자바스크립트 문법으로 데이터베이스 조작 가능 * 자바스크립트 코드를 SQL로 바꿔서 실행을 해준다. 시퀄라이즈를 사용해 보기 위해서 프로젝트 세팅을 하자. 콘솔을 통해 경로로 이동한 후 package.json 작성. //package.json { "name": "learn-sequelize", "version": "0.0.1", "description": "시퀄라이즈를 배우자", "main": "app.js", "scripts": { ..
-
노드 데이터베이스 CRUD 작업하기노드 2023. 4. 18. 16:15
Create, Read, Update, Delete 데이터베이스에서 많이 하는 작업 4가지 이다. 첫 글자들을 따서 CRUD라고 한다. Create INSERT INTO 테이블 (컬럼명들) VALUES (값들) 앞에는 컬럼의 이름이 왔고 values 다음에는 각각의 컬럼에 들어갈 데이터를 적었다. 하지만 id 컬럼이 보이지 않는다. 처음에 테이블을 만들때 id 컬럼은 auto_increment 조건을 줬다. 즉, 따로 명시를 하지 않아도 데이터가 들어갈 때마다 자동으로 1, 2, 3 이런 식으로 넣어주게 된다. *근데 꼭 모든 컬럼을 다 써줘야 하는 건 아니다. 단, 명시한 컬럼은 꼭 데이터를 넣어주어야 한다. Read Select 컬럼 From 테이블명 select * 은 모든 컬럼을 선택한다는 의미이..
-
노드 데이터베이스 MySQL노드 2023. 4. 18. 15:40
데이터베이스 지금까지는 데이터를 서버 메모리에 저장했다. 서버를 재시작하면 데이터도 사라져버린다. ->영구적으로 저장할 공간이 필요하다. MySQL 관계형 데이터베이스 사용 데이터베이스 : 관련성을 가지며 중복이 없는 데이터들의 집합 DBMS : 데이터베이스를 관리하는 시스템 RDBMS : 관계형 데이터베이스를 관리하는 시스템 서버의 하드 디스크나 SSD 등의 저장 매체에 데이터를 저장 서버 종료 여부와 상관 없이 데이터를 계속 사용할 수 있다. 여러 사람이 동시에 접근할 수 있고, 권한을 따로 줄 수 있다. MySQL 설치는 여기에서 https://dev.mysql.com/downloads/installer/ MySQL :: Download MySQL Installer Select Operating S..
-
노드 관계 쿼리노드 2023. 4. 18. 14:07
*시퀄라이저를 사용하고 있는 환경에서 관계 쿼리는 결괏값이 자바스크립트 객체이다. 만약에 사용자를 가져온다~ 라고 하면 다음과 같다 const user = await User.findOne({}); //모두 가져올거면 findAll console.log(user.nick); //사용자 닉네임 user에 유저 한 명을 찾아서 할당을 했고 출력문을 통해 그 유저의 닉네임에 접근했다. 결괏값이 자바스크립트 객체여서 가능한 일이다. include로 JOIN 과 비슷한 기능 수행 가능(관계 있는 것 엮을 수 있음) 만약에 내가 쓴 댓글까지 가져오고 싶다면 어떻게 할까? SQL에서는 조인을 사용해야 하지만 시퀄라이저에서는 User.findOne 한 다음에 include에 Coomment를 넣어주면 된다. const..
-
노드 테이블 관계 이해하기노드 2023. 4. 18. 11:39
관계 정의하기 users 모델과 comments 모델 간의 관계를 정의 1 : N 관계 (사용자 한 명이 댓글 여러 개 작성) 시퀄라이즈에서는 1 : N 관계를 hasMany로 표현(사용자.hasMany(댓글)) 반대의 입장에서는 belongsTo(댓글.belongsTo(사용자)) belongsTo가 있는 테이블에 컬럼이 생김(댓글 테이블에 commenter 컬럼) *테이블, 시퀄라이저 관련 포스팅은 이번주 내로 정리할 예정 말로 표현해보면 좀 더 쉽다. 사용자는 댓글을 여러개 작성할 수 있지만 댓글 하나에는 사용자 한명만이 존재해야 한다. 이런 경우가 1 대 다 관계 즉, 1 : N 관계라 할 수 있다. 모델 각각의 static associate 메서드에 넣는다. //models/user.js ... ..
-
노드 next 활용법노드 2023. 4. 17. 18:22
res.json http 모듈로 데이터를 json으로 쓰기를 간단히 하면 다음과 같다 res.writeHead(200, { 'Content-Type' : 'application/json' }); res. end(JSON.stringify({ hello: 'me'})); 이 부분이 express에서 굉장히 간단하게 변한다. res.json({ hello: 'me'}); *기본 http의 모듈의 메서드들은 거의 사용하지 않게 된다. next를 사용해서 에러 처리 의도적으로 throw 를 통해서 에러를 발생시킬 수 있지만 실무에서 에러는 보통 catch 문을 통해 접근한다. //app.js const express = require('express'); const path = require('path'); c..
-
노드 미들웨어 특성 이해하기노드 2023. 4. 17. 17:19
//app.js const express = require('express'); const path = require('path'); const app = express(); app.set('port', process.env.PORT || 3000); app.use((req, res, next) => { console.log('모든 요청에 실행'); next(); }) app.get('/', (req, res) => { res.sendFile(path.join(__dirname, '/index.html')); }); app.post('/', (req, res) => { res.send('hello express!'); }); app.get('/about', (req, res) => { res.send('..