Javascript

[Express] Mysql Html Tag 걸러내기

eulBlue 2024. 4. 16. 11:02

📱테스트 환경

"express": "^4.18.2"
"typescript": "^5.3.3"

Front 에서 ReactQuill 라이브러리를 이용해서 텍스트 입력을 받고 있었다.

이렇게 하니까 백앤드에서 데이터를 저장할 때 html 코드 그대로 저장해야 했다.

그래야 Bold 나 정렬, 줄바꿈 등 그대로 다시 보여줄 수 있었기 때문이다.

근데 검색기능을 만들다 보니까 html 코드 안에 있는 텍스트도 함께 LIKE 조건에 걸리다 보니 본문에 없는 내용도

있는걸로 인식돼어서 검색결과에 걸려서 나왔다.ㅇㅣ를 해결하기 위해서 정규식 REGEXP_REPLACE 를 사용하였고

REGEXP_REPLACE(a.content, '<[^>]*>', '')

이처럼 사용해주었다.

전체 사용한 코드는 다음과같다.

SELECT
    a.article_id,
    u.username,
    c.ctg_name as ctg_name,
    a.topic,
    a.content,
    a.image,
    a.created_at,
    a.updated_at,
    COUNT(a2.article_id) as review_count
FROM
    article a
LEFT OUTER JOIN users u ON a.user_id = u.user_id
LEFT OUTER JOIN category c ON a.ctg_id = c.ctg_id
LEFT OUTER JOIN articleviews a2 ON a.article_id = a2.article_id
WHERE
	REGEXP_REPLACE(a.topic, '<[^>]*>', '') LIKE CONCAT('%', ?, '%')
OR
	REGEXP_REPLACE(a.content, '<[^>]*>', '') LIKE CONCAT('%', ?, '%')
OR
	REGEXP_REPLACE(u.username, '<[^>]*>', '') LIKE CONCAT('%', ?, '%')
GROUP BY a.article_id 
ORDER BY created_at DESC
LIMIT 10 OFFSET ?

 

'Javascript' 카테고리의 다른 글

[Nuxt] 페이지 이동  (0) 2024.04.24
[Express] Mysql 연결하기  (0) 2024.04.16
[Express] AWS S3 Image 삭제하기  (0) 2024.04.12
[Express] AWS S3 Image 업로드하기  (2) 2024.04.12
[TypeScript] try catch 의 e 타입 - unknown  (0) 2024.03.25