본문 바로가기

Javascript/Node

[node] Sequelize에서의 DB 수정

728x90
반응형

 

수정을 하기 위해선 수정할 데이터를 먼저 화면에 불러오는 작업이 필요하다.

수정하기 버튼을 눌렀을 기존 데이터를 input 박스에 꽂아줘야 한다.

과정을 위해서 먼저 조회 로직을 추가한다.

 

controller(controllers/admin/index.js) url 지정한다.

router.get('/products/edit/:id', ctrl.get_products_edit);

admin.js

admin.ctrl.js 아래 소스를 추가한다.

// 수정할 때 write.html의 폼을 재활용한다.
// 수정을 누르면 해당하는 데이터가 조회된 후에 수정 작업을 해야하기 때문
exports.get_products_edit = (req, res) => {
    models.Products.findByPk(req.params.id).then( (product) => {
        res.render('admin/write.html', { product })
    });
}

admin.ctrl.js

작성이 완료되었으면 write.html 각각 input box value 지정한다.

write.html

해당 작업까지 완료한 url 접속하여 수정하기 버튼을 클릭하면 정보가 input 박스에 꽂히는 것을 있다.

 

여기까지 완료되었으면 이어서 input box text 수정하여 DB 저장시켜야 한다.

 

다시 controllers/admin/index.js 돌아가 url 생성한다.

router.post('/products/edit/:id', ctrl.post_products_edit);

index.js

admin.ctrl.js 돌아와 수정 아래 소스 코드를 추가한다.

exports.post_products_edit = ( req , res ) => {
    models.Products.update(
        {   //데이터
            name : req.body.name,
            price : req.body.price ,
            description : req.body.description
        }, 
        { 
            where : { id: req.params.id } 
        }
    ).then( () => {
        // 상세페이지로 다시 이동
        res.redirect('/admin/products/detail/' + req.params.id );
    });

} 

admin.ctrl.js

수정 화면에서 input box 텍스트를 수정한다.

 

728x90
반응형