npm

이재영·2023년 5월 1일
0

Node.js

목록 보기
6/12
post-thumbnail

npm 이란?

-> Node Packaged Manager 로 nodejs 로 만들어진 package(모듈)들을 관리해주는 툴 이다.

npm init 을 하면 package.json 파일을 만들어준다.
파일을 만들 때 속성들을 입력하라고 하는데,

그 속성들은 메타데이터로 데이터들의 설명해주는 데이터이다. 책이 한권 있다고 하면 그 책의 제목,저자,출판사 등 책의 정보를 설명해주는 것과 같다고 생각하면 된다.

우리의 프로젝트 정보를 가지고 있는 JSON 파일이다.
메타데이터 설명을 가지고 있는 json 파일 초기화 명령어
-> npm init 를 하면 패키지 이름 등등 정해줘야 한다.

// name : 프로젝트의 이름
// version : 프로젝트의 버전을 정의한다.
// description : 프로젝트의 설명, 문자열로 작성하면됨.
// main : 이 값을 작성해주면 패키지를 require 함수로 불러올 때 이 파일을 불러올 수 있다.

// scripts : 우리가 자주 실행할거같은 명령어를 작성해두고 npm 명령어로 실행할 수 있다
// 예) npm run test
// "scripts" : {start : "node index4.js"} === npm start == node index4.js

// keywords : 프로젝트를 검색할 때 참조하는 키워드들을 배열로 전달해주면 된다.
// author : 패키지 만든 사람 작업자 정보
// license : 패키지 라이선스

// 그래서 모든 설정에 기본값으로 설정하는 명령어
npm init -y


mysql 에 연결 해보자.

mysql2 라는 외부 모듈을 설치 받아서 사용할것이다.
-> npm install mysql2 또는 npm i mysql2

설치하게 되면 node_modules 와 package-lock.json 파일 2개가 생기는데 해당 파일들은 git 올리면 시간이 오래걸리기 때문에 올리지 않는다. git에 안올리는 방법은 .gitignore 라는 파일에 파일명을 추가해주면 된다.
그렇기 때문에 다른 작업자는 mysql2를 설치한지 확인할 수 없다. 하지만 npm install 이나 npm i를 입력하면
package.json 에 있는 dependencies의 내용의 모듈을 모두 설치된다.

"dependencies": {
"mysql2": "^3.2.4"
}
^3.2.4 이거 버전인거 알겠는데
^의 의미는 이 버전이 없으면 다른 버전을 찾아서 설치받는다는 뜻임.

실제 설치된 버전은 lock.json에 있음.
mysql모듈도 있다 .근데 왜 mysql2을 쓰냐
mysql모듈은 콜백 기반으로 promise 기반으로 사용하기가 힘듬.. 그래서
mysql2를 사용할거고. mysql2가 promise 기반을 지원하기때문에 사용하기 편하다.
공식문서에서도 mysql2을 사용하라고 권장을 함.

mysql2 모듈을 가져와서 mysql 연결

// mysql2 모듈 가져오기
const mysql = require("mysql2");

//createConnection 메서드로 연결
// 매개변수로 연결하는 mysql의 옵션을 전달해줘야한다.
// host: 연결할 호스트를 나타냄. root
// port : 연결할 포트 3306포트에 기본적으로 열림.
// user : 사용자의 이름
// password : 사용자 비밀번호
// database : 어떤 데이터 베이스를 연결 시킬건지

const temp = mysql.createConnection({
    user : "root",
    password : "root 계정비밀번호",
    database : "데이터베이스 이름", // 데이터베이스는 워크벤치에서 스키마 utf-8,utf-8 bin으로 미리 만들기.

});

// query 메서드 : 쿼리문을 매개변수로 전달해서 데이터베이스의 쿼리 작업을 시킬 수 있다.
// "SELECT * FROM products" : products 테이블이 있는지 확인 값을 가져온다. 콜백함수의 두번째 매개변수로 데이테베이스 값을 반환 
temp.query("SELECT * FROM products",(err,res)=>{

    if(err){
        // 테이블이 없다는 이야기
        console.log("테이블이 없어");
        const sql ="CREATE TABLE products(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20), number VARCHAR(20), series VARCHAR(20))"
        // 쿼리문 내용
        // products 이름의 테이블을 만드는데
        // id 컬럼은 INT 숫자형
        // AUTO_INCREMENT : 자동으로 값이 증가할 수 있도록 설정 PRIMARY KEY에 주로 사용합니다.
        // PRIMARY KEY : 테이블에는 고유한 값을 가지고 있는 컬럼 하나 무조건 필요한데 고유한 값을 설정하는데 PRIMARY KEY로 설정한다.
        // name, number, series 이런 클럼에는 VARCHAR 문자열이고 괄호에는 글자 수를 정해줄 수 있다. 20자까지 허용시켜 놓았음
        
        temp.query(sql);
        console.log("테이블이 없어서 만들었어");
    }
    else{
        console.log(res);
        console.log("테이블이 있어");
    }
})

데이터베이스 테이블 안에 값을 넣을 때는 테이블 명 3번째 표같이 생긴 아이콘을 클릭해서 아래 Result Grid 테이블안에 값을 입력하면 된다.

profile
한걸음씩

0개의 댓글