2021. 3. 19. 00:56ㆍDev/Node
[클립명]
1. Moment.js
2. DB수정
3. DB삭제
DB 수정 (update)
sequelize에서의 DB update는 아래와 같이 처리한다. ( models.테이블명.update )
update 함수의 매개변수로 2개가 전달된다.
- 첫번째 : update할 칼럼명과 값
- 두번째: where절 조건
exports.post_products_edit = (req, res) => {
//update
models.Products.update(
//update할 칼럼 정보
{
name:req.body.name,
price:req.body.price,
description:req.body.description
},
//where절
{
where : { id : req.params.id}
}).then(()=>{
res.redirect('/admin/products/detail/' + req.params.id);
});
}
DB 삭제 (delete)
sequelize에서의 DB delete는 아래와 같이 처리한다. ( models.테이블명.destroy )
destroy 함수의 매개변수로 where절 조건을 전달한다.
exports.get_products_delete = (req, res) => {
//delete 처리
models.Products.destroy(
//where절
{
where : { id : req.params.id}
}).then(()=>{
res.redirect('/admin/products');
})
}
간단한 정리
sequelize에 대해서 포스팅한 걸 정리해보자면 아래와 같다.
models.테이블명.create -----> insert
models.테이블명.findAll(조회조건) ------> select
models.테이블명.findByPk(primary key) ------> select
models.테이블명.findOne(조회조건) -----------> select
models.테이블명.update(데이터, 조회조건) ----> update
models.테이블명.destroy(삭제조건) ------------> delete
이 외에도 다양한 함수들이 있기 때문에, sequelize에 대한 별도 공부가 필요하다. (sequelize 공식 사이트)
Moment.js
자바스크립트에서 날짜를 다양한 형태로 편리하게 표현하기 위해 많이 쓰이는 라이브러리 moment.js 를 설치하여 적용해보자.
//moment 패키지 설치
$ npm install moment
sequelize를 이용하여 모델을 생성하는 소스에서 moment 패키지를 로드하고, prototype으로 날짜를 원하는 포맷으로 변경하여 리턴해주는 함수를 작성한다.
//moment 로드
const moment = require('moment');
module.exports = (sequelize, DataTypes) => {
const Products = sequelize.define('Products',
{
id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
name : { type: DataTypes.STRING },
price : { type: DataTypes.INTEGER },
description : { type: DataTypes.TEXT }
},
// options
{
timestamps: true
}
);
//Products 의 프로토타입으로 dateFormat 함수 생성
Products.prototype.dateFormat = (date) => {
//moment 라이브러리를 이용하여 원하는 포맷으로 날짜 리턴
return moment(date).format('YYYY년 MM월 DD일');
}
return Products;
}
※ 프로토타입 함수 생성하는 부분에서 별도 로직이 없이 바로 값을 리턴하는 경우에는 아래와 같은 문법으로 작성해도 된다.
Products.prototype.dateFormat = (date) => (
moment(date).format('YYYY년 MM월 DD일')
);
템플릿 html에서 prototype으로 만든 함수를 호출하여 날짜 포맷을 변경하여 화면에 출력한다.
{% set title = "관리자 리스트" %}
{% extends "layout/base.html" %}
{% block content -%}
<table class="table table-bordered table-hover">
<tr>
<th>제목</th>
<th>작성일</th>
<th>삭제</th>
</tr>
{% for product in products %}
<tr>
<td>
<a href="/admin/products/detail/{{product.id}}">
{{ product.name }}
</a>
</td>
<td>
<!-- prototype 함수 호출 -->
{{ product.dateFormat(product.createdAt) }}
</td>
<td>
<a href="#" class="btn btn-danger">삭제</a>
</td>
</tr>
{% endfor %}
</table>
<a href="/admin/products/write" class="btn btn-default">작성하기</a>
{% endblock %}
YYYY년 MM월 DD일 포맷으로 화면에 출력된다.
'Dev > Node' 카테고리의 다른 글
[NODE 강의] 크롤링 (Crawling) - 배송위치 추적 (0) | 2021.03.27 |
---|---|
[NODE 강의] Promise (0) | 2021.03.24 |
[NODE 강의] 데이터베이스 조회 및 상세페이지 (0) | 2021.03.17 |
[NODE 강의] 데이터베이스 접속 (0) | 2021.03.13 |
[NODE 강의] dotenv & Sequelize? (0) | 2021.03.09 |