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 끝내고 얼른 다음 단계로 넘어가야지