20240126

귤금·2024년 1월 26일

Node.js 4기 TIL

목록 보기
23/86

Today?

Node.js 숙련주차 1주차

Node.js에서 Mysql 연결하기

  • mysql2, express 라이브러리 사용

  • 연결 속성

    • host
    • user
    • password
    • database
      const connect = mysql.createConnection({
       host: 'AWS RDS 엔드포인트',
       user: 'AWS RDS 계정 명',  
       password: 'WS RDS 비밀번호',
       database: '연결할 MySQL DB 이름',
      })
      const app = express();
      const PORT = 3017;
      나는 AWS RDS에서 대여받았기 때문에 해당 데이터베이스의 db명과 계정, 주소를 사용했다.
  • app.js 생성

  • table

SQL Injection?

구동중인 백엔드 DB에서 사용되는 쿼리를 조작하여 데이터베이스를 대상으로 악의적인 행위를 할 수 있는 Injection 기반의 웹 취약점.

Prisma

  • ORM(Object Relational Mapping) : 객체와 데이터베이스의 관계를 연결시켜주는 도구
    • <> mongoose : ODM (Object Document Mapping)

nodemon과 prisma 설치

  • nodemon : 파일 저장 시 자동으로 서버 재시작해주는 라이브러리
nodemon app.js

package.json에도 nodemon 스크립트 등록함!

...
"scripts": {
	"dev" : "nodemon app.js"
};

prisma model

  • 프리즈마가 사용할 데이터베이스의 테이블 구조를 정의하기 위해 사용됨
    • 특정 테이블의 row와 column 값을 넣어서 사용한다. db와 express를 맵핑해줌!

prisma client

  • node_modules에 있는 Prisma Client
    • 내부적으로 프리즈마 CLI 실행 (예 : prisma db push -> generate)

오늘 배운 것

회고

또 인썸니아를 써야해...
왔다갔다하면서 테스트하기 불편하다 그렇지만 확인하려면 어쩔 수 없겠지...

  • swagger라는 라이브러리를 app.js에 적용시킬 수 있다는 이야기가... 알아봐야댐

코드카타

문제 1

이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.
별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요.

//내가 짠 코드
process.stdin.setEncoding('utf8');
process.stdin.on('data', data => {
    const n = data.split(" ");
    const a = Number(n[0]), b = Number(n[1]);
    for(row = 0; row < b; row++){
        console.log('*'.repeat(a));
    }
});

처음 보는 형식의 함수라 이게 뭔가 했다. return 대신 콘솔로 찍히는 걸 확인하고 일단 풀어봤다. 답이 직사각형 형식으로 나온다고 해서 줄바꿈을 넣어줘야 하는지 엄청나게 고민했는데, 그런 건 필요없고 그냥 콘솔 로그를 세로 길이만큼 찍어주니까 정답이더라...허망하다... 왜 이런 구조로 나왔나 했더니 이렇게 console.log를 여러번 찍어서 답을 내야 해서 그런 것 같다. return시키면 바로 종료되니까. (이래서인지는 확실치 않음)

별개로 process.stdin이 뭔지 좀 찾아봤음. Node.js에서 기본적으로 제공되는 스트림 객체라고 한다. 키보드로 입력된 데이터를 읽어들일 때 사용한다는데 아직 정확히 어떻게 사용하는 건지 감이 잡히진 않는다.

//예제 코드
process.stdin.setEncoding('utf8'); // 입력 데이터 인코딩 설정

process.stdin.on('data', (data) => {
    console.log(`입력받은 데이터: ${data}`);
    // 여기에서 데이터를 처리하거나 원하는 작업 수행
});

console.log('프로그램을 실행합니다. 사용자로부터 입력을 기다립니다.');

노드에서 쓰는 객체라고 하니까 공부하다보면 나오겠지?

0개의 댓글