Unity/Project : Cursed Treasure

팀프 21.07.15. Node.js - Sequelize로 DB에 데이터 추가하기

HappyFrog 2021. 7. 15. 17:11

** Node가 설치되어 있어야 함.

 

npm init -y

npm i express nodemon

npm i sequelize

npm i sequelize-auto

npm i sequelize -cli -g (스켈레톤을 생성)

sequelize init

 

  • 위 패키지들을 모두 설치하고 시퀄라이즈도 초기화했다면 config파일과 models파일이 생겨났을 것이다.
  • 물론 models에는 index파일밖에 없겠지만 곧 만들것이다.
  • config에서 우선 자신이 불러올 DB의 정보를 입력해주자.

 

  • define 이하로의 설정은 DB를 생성할 때 utf8 / utf8_bin설정을 하는 것과 같다.

그리고 Sequelize-auto를 이용하여 매핑을 해보자.

 

  • 우선 app.js로 파일을 하나 만들어주자. (cafe24로 호스팅하는 경우는 web.js)
  • 그리고 시퀄라이즈 오토를 임포트한 뒤 시퀄라이즈 오토에 내가 사용할 DB의 정보들을 입력하여 실행시킨다. 여기서 "test"라고 적힌 부분은 내가 불러오려는 데이터베이스의 이름을 적어주면 된다. 
  • 그러면 models에 내 DB의 테이블들이 매핑될것이다.

 

이거말고

이거

 


 

딱히 건들것은 없고 이제 SELECT를 Node에서 실행해보자.

//라우터.get
app.get("/api", async (req, res) => {
  let json = await connect();
  res.send(json);
});

//Sequelize 선별 데이터 읽기
async function connect() {
  try {
    const users = await models.user.findOne({
      where: {id : "1"}
    });
    let json = JSON.stringify(users);
    console.log(json);
    return json;    
    }
    catch(err){
      console.log(err);
    }
}


// Sequelize 선별 데이터 읽어오기
async function connect() {
  try {
    const users = await models.user.findAll({
      attributes: ["id", "nickname"],
      where: {
        id: {
          [Op.gt]: 1,
        },
      },
    });
    const json = JSON.stringify(users);
    console.log("here");
    console.log(json);
    return json;
    //접속대기
    console.log("connected");
  } catch (err) {
    console.log(err);
  }
}
  • 해당 코드들은 비동기로 DB의 데이터를 읽어오는 함수들이다.
  • 실행시키는 함수를 마찬가지로 비동기로 실행시킨다면 사용가능하다.

  • Op은Sequelize를 임포트하는 과정에서 함께 임포트 할 수 있다.
  • Op은 크기를 비교하는 기능을 한다. => [Op.gt]: 1 == 1보다 크다면

  • 해당 코드로 실행시키면 다음과 같이 id가 1인 값을 불러올 수 있다.

 

 

  • INSERT는 다음과 같은 식으로 실행할 수 있다. 
  • models.DB이름.craete({row : "내용"})식으로 선언해주고 user.save()까지 해주면 DB에 저장이 된다.