게시판 제목에서 '가 포함된 내용을 입력하면 db sql문에서 끝으로 인식하여 insert가 되지 않고 에러가 나는 상황이 발생했다.
그래서 db로 가기 전에 javascript에서 html 특수문자로 바꿔준 후 db에 넣고, 리스트를 가져올 때는 재변환하여 화면에 출력시켰다.
Reference : html 특수문자 리스트 : http://kor.pe.kr/util/4/charmap2.htm
HTML 특수문자 리스트
kor.pe.kr
writer.ejs
<script type="module" src="../../../public/js/writer.js"></script>
<input class="title-inputer" type="text" placeholder="제목">
writer.js
title = escapeHtml($('.title-inputer').val());
const entityMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/',
'`': '`',
'=': '='
};
function escapeHtml(string) {
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
}
board.js (nodejs)
const entityMap = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
''': "'",
'/': '/',
'`': '`',
'=': '='
};
function unescapeHtml(string) {
return String(string).replace(/&|<|>|"|'|/|`|=/g, function (s) {
return entityMap[s];
});
}
router.get('/list/:page', async function(req, res, next){
// DB에서 데이터 가져오기
let postData = [];
items = await service.pagingPosts(no, page_size);
for(let item of items){
let node = {
'pkid':item['postPk'],
'postTitle':unescapeHtml(item['postTitle']),
'p_userPk':item['p_userPk'],
'p_userName':item['p_userName'],
'postContent':item['postContent'],
'writeDate':item['writeDate'],
'recentDate':item['recentDate'],
'p_catePk':item['p_catePk'],
'useable':item['useable'],
'pCate':item['pCate'],
'cCate':item['cCate']
}
postData.push(node)
}
});
'개발 > Node.js' 카테고리의 다른 글
Postgre와 nodejs(Express.js) 연동 - 1 (연결확인 및 .env 설정) (0) | 2021.11.15 |
---|---|
환경변수를 관리하는 .env 설정 하는 방법 (node.js) (0) | 2021.11.05 |
API nodejs 에서 사용하기 (feat.postman) (1) | 2021.10.25 |
서버 개념 정리 (프록시, DNS, SSH, HTTP, 프로토콜, 바인딩, FTP) (0) | 2021.07.26 |
Express - res.json vs res.send (0) | 2021.07.21 |