Node.js

리진아·2023년 6월 21일
0

js 공부하기

목록 보기
2/10

✔︎ Node.js 란 서버 측 자바스크립트 런타임 환경임

npm <- 많은 모듈을 사용할 수 있는 도구

js는 브라우저에서 실행할 수 있는 언어임 그러나 기존에 이미 Node.js를 다운받았기 때문에 브라우저 콘솔창이 아닌 터미널에서 바로 실행할 수 있음.

npm init  //npm을 실행하겠다. 모듈을 정리할 수 있음
npm install figlet - g //figlet 모듈을 전역으로 내 컴퓨터 전체에 다운을 받겠다
npm uninstall figlet //안 쓸거니 삭제한다

package.json >> 대략적인 dependencies
package-lock.json >> 모듈에 대한 자세한 설명

var figlet = require('figlet'); //figlet이라는 단어를 요구하다
//var 중복 선언 가능, 마지막에 할당된 값을 출력함
//let  중복 선언 불가능, 초기화해서 재할당 가능
//const 중복 선언 불가능, 재할당 불가능 (변하지 않는 값)

//figlet변수 사용
figlet('Hello?', function(err, data){
    if(err){
        console.log('Something went wrong');
        console.dir(err);
        retrurn;
    }
    console.log(data);
});

실행 결과

✔︎ express란 최소한의 기능을 갖춘 라우팅 및 미들웨어 웹 프레임워크

웹 프레임워크 : 클라이언트에서 요청을 했을 때 서버단에서 요청을 받고 다시 클라이언트로 응답을 보내는 것

app.get('/dog', (req, res) => { 
  res.send({'sound' : '멍멍'});  //JSON형식으로 보내기
});
app.get('/cat', (req, res) => { 
  res.send({'sound' : '야옹'}); 
});

✔︎ express에서 http 메서드 만들기

// 미들웨어 설정
app.use(express.json());
// 임시로 데이터를 저장할 배열
let posts = [];

// get메서드로 저장된 데이터 조회 
app.get('/posts', (req, res) => {
  res.json(posts);
});

// post메서드로 새로운 데이터 생성
app.post('/posts', (req, res) => {
  const { title, content } = req.body;
  const newPost = { id: Date.now(), title, content };
  posts.push(newPost);
  res.status(201).json(newPost);
});

포스트맨으로 테스트

http://localhost:200/posts 로 접속하여 조회

✔︎ express에서 MySql 연동하기

npm install mysql2

App.js에 아래 코드 추가

const mysql = require('mysql2/promise'); //모듈을 가져와라
//mysql2의 promise는 MySQL과의 비동기적인 상호작용을 가능하게 함

const pool = mysql.createPool({ //mysql와 연동하는 pool
  //createPool 함수로 호스트, 포트, 사용자 이름, 비밀번호, 데이터베이스 등의 연결 정보를 설정
    host: 'localhost',
    port: '3306',
    user: 'root',
    password: 'abcd1234',
    database: 'userdb'
});

const getConn = async() => {
  //pool.getConnection 함수는 async/await 구문을 사용하여 비동기적으로 동작
    return await pool.getConnection(async (conn) => conn);
};

app.get('/db', async (req, res) => {
  //await 키워드를 사용하여 getConn 함수의 비동기 작업이 완료될 때까지 기다림
  const conn = await getConn();
  
  //SQL 쿼리를 정의
  const query = 'select * from exam;';
  
  //conn.query 함수를 사용하여 SQL 쿼리를 실행
  //쿼리의 결과는 rows 변수에 할당
  let [rows, fields] = await conn.query(query, []);
  
  //사용이 완료된 연결을 커넥션 풀에 반환 다른 요청에서 재사용할 수 있음
  conn.release();
  
  //클라이언트에 전달
  res.send(rows);
});

db에 예제 데이터 값 넣기

실행결과

profile
안녕?

0개의 댓글