react와 express 서버 연동 익히기 9편 -DB 데이터 삭제하기-
1. App.js 수정
front의 App.js에 데이터를 삭제하는 deleteData 함수 작성
async function deleteData(el) {
const remove = window.confirm(el.name + '을 삭제합니까?');
if (remove) {
const body = {id:el.id}
const res = await axios('/delete/data',{
method : 'POST',
data: {'delete':body},
headers: new Headers()
})
if (res.data) {
alert('데이터를 삭제했습니다.')
return window.location.reload();
}
}
}
삭제 버튼도 추가해서, 누르면 삭제할 수 있도록
return (
<div className='App'>
<h3> welcome to <u> daehyuck </u> blog! </h3>
<h5> 대혁이다 </h5>
<br />
<form method= 'POST' onSubmit={(e) => addData(e)}>
<input type="text" maxLength='10' onChange={(e) => nameUpdate(e)}/>
<input type="submit" value="Add"/>
</form>
<br /> <br />
<div style={{ height: '250px', overflow: 'auto' }}>
<h4 style={{ color: '#ababab'}}> Teachers List </h4>
<div style={{ border: 'solid 1px black', width : '50%', marginLeft : '25%', textAlign : 'left'}}>
<div style={{ display : 'grid', gridTemplateColumns : '32% 35% 30%', textAlign : 'center' }}>
<div> Number </div>
<div> Name </div>
<div> Other </div>
</div>
</div>
{list.length !== 0 ? list.map( (el,key) => {
return(
<div key={key} style={{ display : 'grid', lineHeight: '40px', gridTemplateColumns : '32% 35% 20% 0%', width: '50%', marginLeft:'25%'}}>
<div> {el.id} </div>
<div> {el.name} </div>
{/* 추가 */}
<div
style={{color:'#ff3399'}}
onClick={() => modifyData(el)}> Modify </div>
{/* 추가 */}
<div
style = {{ color: '#f5a0a0'}}
onClick={() => deleteData(el)}>Delete </div>
{/* 추가 */}
</div>
)
})
: null}
</div>
</div>
)
실행시켜보면 다음과 같다
2. 삭제하는 api 추가
server.js에 삭제를 위한 api를 추가
//데이터 삭제
app.post('/delete/data', (req,res) => {
Teacher.destroy({
where : { id: req.body.delete.id }
})
.then( res.sendStatus(200) )
.catch( err => { throw err })
})
여기서 쓰인 destroy 메소드는 sequelize를 이용해 데이터를 삭제하는 메소드
destroy 메소드는 어떤 대상을 삭제할 것인지, where로 받는다.
해당 컬럼의 이름을 key값으로 받고, 그 컬럼안의 데이터를 value로 받아서, 해당 데이터를 select한 다음 삭제
만약 Teacher 테이블에서 name의 '수지'를 삭제하고 싶다면...
app.post('/delete/data', (req,res) => {
Teacher.destroy({
where : { name: '수지' }
})
.then(res.sendStatus(200))
.catch(err => {throw err})
})
이러면 컬럼 name 값이 수지라는 행이 삭제될 것이다
2번 행의 delete를 눌러보자.
const remove = window.confirm(~)에 의해 창이 뜨면서 삭제할지 확인을 하고 있음
그러면 삭제했다고 나오고...
실제로 조회하면 데이터가 삭제되어 있다
그리고 sql workbench에서도 확인해보면... 지정한 데이터가 삭제되어있다.
3. 모든 테이블 초기화
다음 코드를 작성하면, 모든 테이블을 초기화한다고 함
sequelize.sync({force:true});
특정 테이블이 아니고, 모든 테이블을 초기화한다는 점을 주의
작성하고, 리액트를 재시작해보면... 생성한 테이블이 모두 없어져있다
백엔드 콘솔도 다음과 같이 에러남
참조
React로 블로그 만들기 10 : [Sequelize] 4. 데이터 삭제 (Delete) 하기
앞서 데이터를 생성, 조회, 수정하는 방법을 알아보았고 마지막으로 삭제하는 방법에 대해서 알아보겠습니...
blog.naver.com
'프로그래밍 > node.js' 카테고리의 다른 글
react&node.js 개발 - 로그인하면서 JWT 토큰 발급받고 유저 정보 알아내기 (0) | 2023.01.22 |
---|---|
node.js 프로그래밍에서 axios 504에러날때 시도할부분 (0) | 2023.01.19 |
react와 express 서버 연동 익히기 8편 -DB 데이터 수정하기- (0) | 2023.01.18 |
react와 express 서버 연동 익히기 7편 -DB에서 데이터 조회- (0) | 2023.01.18 |
react와 express 서버 연동익히기 6편 -DB에 데이터 추가- (0) | 2023.01.18 |