일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- status code
- pm2
- 스코프
- Django
- westagram
- 호이스팅
- manytomanyfield
- OSI7계층
- rebase
- 트랜잭션
- 자바스크립트
- wecode
- TypeError: this.boardRepository.createBoard is not a function
- bcrypt
- crud2
- 실행 컨텍스트
- typescript
- CORS
- 프로미스
- 노드
- docker
- nodeJS
- async/await
- on_delete
- Jest
- JWT
- javascript
- 장고초기세팅
- django westagram
- node
- Today
- Total
목록분류 전체보기 (190)
될때까지
팔로우 팔로워 기능을 실습하고 있는데 에러가 발생했다. select * from follows as f left join users as u on f.to_user = ( select * from users where users.name = '전은형'); 왼쪽에 있는 컬럼의 개수와 오른쪽의 컬럼 개수가 일치하지 않아서 생긴 오류였다. 왼쪽에서는 f.to_user 1개 컬럼에 맞게 오른쪽 subquery에서도 select 1개의 행을 반환해주면 에러가 해결된다.
SQL (Structured Query Language) 구조적 질의 언어의 줄임말로, 관계형 데이터 베이스(RDB)에서 데이터를 보다 쉽게 검색,추가,삭제,수정같은 조작을 할 수 있도록 고안된 언어다. SQL문법은 크게 3가지의 종류로 나뉜다. DML(Data Manipulation Language, 데이터 조작 언어) DDL(Data Definition Language, 데이터 정의 언어) DCL(Data Control Launguage, 데이터 제어 언어) SQL 뜻 해석 예시 DML Data Manipulation Language 데이터 조작 및 데이터 관리를 위한 언어다. INSERT, UPDATE, DELETE, SELECT.. DDL Data Definition Language 데이터베이스의..
Request 메세지 구조 HTTP 요청은 클라이언트에서 서버에 일을 시작하게 하기 위해 보내는 메세지다. 이 메세지의 구조는 크게 세 부분으로 나뉜다. 1. Start Line : HTTP request message의 시작라인 GET /login HTTP/1.1 # 해석: GET 메소드로 login 이라는 요청 타겟에 HTTP 1.1 버전으로 요청을 보내겠다! HTTP Method : 해당 요청이 의도한 액션을 정의한다 (GET, POST, PUT, DELETE 등) Request Target : 해당 request가 전송되는 목표 url HTTP Version : 사용되는 HTTP 버전을 뜻한다(주로 1.1버전이 널리쓰임) 2. Headers : 해당 요청에 대한 추가정보(메타 데이터)를 담고는 부..
Split() string객체를 지정한 구분자를 이용하여 여러개의 문자열로 나눈다. const str = 'hello-node-world' const result = str.split('-') console.log(result) // [ 'hello', 'node', 'world' ]
map() 배열내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다. const a = [1,2,3,4] const b = a.map((result) => { return result + 1 }) console.log(b) result에는 1,2,3,4가 순서대로 담기고 해당 값에 +1을 해서 수정된 값이 반환되서 a에 담긴다 console.log(b)의 결과는 [2,3,4,5]가 된다.
노드 ORM을 사용하지 않고 raw query만 사용해 쿼리를 작성하다 보니 SQL도 공부하고 있다. 자라홈 프로젝트에서 상품 테이블이 있었고, 상품 옵션 테이블이 다대다 관계로 존재했고, 옵션 테이블에 옵션에 대한 정보가 있었다. INNER JOIN 기준 테이블과 조인 테이블 모두의 데이터가 존재해야 쿼리 결과값으로 반환된다. 교집합느낌? 위에 캡처한 테이블에서 쿼리를 아래와 같이 작성했다. select po.price, s.name from products_options as po inner join sizes as s on po.size_id = s.id; 결과를 예측해보자. 현재 products_options 테이블을 기준테이블로 잡았으니까 po테이블에 있는 데이터의 값과 조인 테이블인 size ..
상품 상세보기 기능을 구현하다 어려움에 봉착했다. 1차때는 장고 ORM을 사용해서 여러개의 가격들을 하나의 배열로 담아 반환했는데.. 이를 raw query로 어떻게 작성하냐 일단 지금까지 작성한 코드는 이렇다. const getProductById = async (productId) => { const sql = ` SELECT products.id, products.name, products.number, products.description, products.image_url, sizes.name, products_options.price FROM products JOIN products_options ON products_options.product_id = products.id JOIN size..
1차 프로젝트로 진행했던 자라홈을 노드로 작업하고 있다. 장고에서 생성했던 users테이블에는 created_at과 updated_at이 있었고, 기본값을 orm을 사용해서 설정했었는데 지금 노드에서는 raw query를 사용해서 작업중인데.. 이걸 어떻게 변경할까!? sql에서 아래 명령어를 입력해서 기본값을 설정해줬다. ALTER TABLE users MODIFY COLUMN created_at DATETIME DEFAULT CURRENT_TIMESTAMP; ALTER TABLE users MODIFY COLUMN modified_at DATETIME DEFAULT CURRENT_TIMESTAMP; // models.userDao.js const db = require("../config/mysql"..
JWT? JWT은 JSON WEB TOKEN의 약자로 유저를 인증하고 식별하기 위한 토큰 기반 인증법이다. 토큰은 클라이언트쪽에 저장하기 때문에 서버쪽에 저장이 불필요하므로 부담이 덜하다. JWT를 사용하면 Stateless한 환경에서도 사용자의 데이터를 주고 받을 수 있다. JWT는 header(헤더).payload(내용).signature(서명)로 3가지의 문자열로 구성되어있다. 헤더 : 어떤 알고리즘을 사용할거야, 어떤 토큰을 사용할거야를 담아준다. 내용 : 서버에서 첨부한 사용자 id와 같은 데이터들 - 노출이 되므로 사용자의 id가 아닌 pk id, 토큰 발급일, 만료일자 등을 담는다. 서명 : JWT의 가장 핵심적인 파트로, 이 토큰이 서버로부터 만들어진게 맞는지 증명하기 위한 부분이다. 헤더..
예외(exception) : 처리하지 못한 에러 노드 스레드를 멈춘다. 노드는 기본적으로 싱글스레드라 스레드가 멈춘다는 것은 프로세스가 멈추는 것을 의미한다. 에러 처리는 필수다! 기본적으로 try catch문으로 예외를 처리한다. 에러가 발생할만한 곳을 try catch로 감싼다. 노드 비동기 메서드의 콜백에러는 따로 처리하지 않아도 된다. 콜백 함수에서 에러 객체를 제공하기 때문이다. const fs = require('fs'); setInterval(() => { fs.unlink('./abcd.js', (err) => { if(err) { console.error(err); } }) }, 1000); 프로미스의 에러는 현재 catch를 안붙여도 프로세스가 멈추지 않지만 경고를 준다. 왠만하면 ca..