2020년 11월 10일 느낀 점: DB, Back단은… 쩝

DB 구축(mariadb)

DB는 남자친구 서버에 mariaDB로 구축하였다.

MongoDB를 할까했지만, 일단 정형화된 DB를 먼저 겪어보고 싶어서

MariaDB로 선택!

Sequelize 설치

Sequelize는 Node.js 기반의 ORM으로 Object-Relation Management이다.

쉽게 말하면 테이블과 객체 연동을 해준다는것

yarn add sequelize path mysql2

model 설계 (DB의 table 역할)

각 필요한 Table을 js로 설계하고, index.js 파일에서 관리한다.

나는 아직 따라하는 단계라 제대로 설계는 안해봤지만,

게시판이기 때문에 board라는 table을 만들어서 id, title, content, name, date를 사용할 것 같다.

또한 회원관리하는 user라는 table도 있어서 id, user, pw, phone을 저장하려한다.

Sequelize 연동

연동하는 법은 구글에 자세히 나와있다! (다른 블로그에서 본거라 올릴 수가 없음ㅠㅠ)

Server-Sequelize 동기화

const sequelize = require('./models').sequelize;
sequelize.sync();

app.use(express.json());

데이터 삽입 (insert)

Sequelize를 이용해 table을 가져오고(index.js에 정의된 테이블),

create method를 사용해 client에게 받은 데이터를 넣는다.

//table  불러오기
const{
    TableName,
    Sequelize: {Op}
} = require('./models');
sequelize.query('SET NAMES utf8');

//Client로부터 받아오는 값 조회할 수 있는 API 작성
app.post('/api/addData', (req, res) => {
    console.log(req.body);

        TableName.create({
            name: req.body.data
        })
        .then(result => {
            res.send(result)
        })
        .catch(err => {
            console.log(err)
            throw err;
        })
})
 const [name, setName] = useState('');
  
  const addData = async(event) => {
    event.preventDefault();
    console.log('hi');
    const nameInput = name;
    
    const res = await axios('/api/addData', {
      method : 'POST',
      data : { 'data' : nameInput }, //server에서도 해당 키(data)로 받아야 한다
      headers: new Headers()
    })

    if(res.data){
      alert('Added Data');
      return window.location.reload();
    }
  }

AH……… axios를 통한 데이터 통신은 이해가 가는데,

DB model 다루는 부분이 이해가 갈거 같으면서도 혼자 써보라 하면 못 쓸거 같은 느낌이 든다….. 연동하는데에 필요한 라이브러리도 많아서ㅋㅋㅋㅋㅋ(mysql, sequelize, body-parser…) 참 DB 다루는 사람들은 천재가 맞다고 확신하게 되었다.

내일은 DB 끝내고 얼른 다음 단계로 넘어가야지

Leave a comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다