9시 24분
검색 기능 본문
오늘은 https://hayjo.tistory.com/88 을 참고하여 검색 기능을 만들었다.
구현 핵심 포인트: 쿼리 추출 & LIKE 구문 이용
우선 이것이 search.js의 전체 코드이다!
const { request } = require('express');
const express = require('express');
const router = express.Router();
const sanitizeHtml = require('sanitize-html');
const url = require('url');
// 파일 분리
const db = require('../lib/db.js');
const template = require('../lib/template.js');
const auth = require('../lib/auth.js');
router.get('/', function(request, response){
// 쿼리값 추출
const newUrl = new URL(request.url, 'http://localhost:3000/search');
const urlParams = newUrl.searchParams;
const query = urlParams.get('query');
db.query(`SELECT * FROM topic`, function(error, topics){
var title = `${query}`;
var list = template.list(topics);
var view = ``;
db.query(`SELECT id, title FROM topic WHERE title LIKE ?`, `%${query}%`
,function(error2, result){
if(error2) throw error2;
for(var i in result){
view += `
<li><a href='/topic/${result[i].id}'>${result[i].title}</a></li>
`;
}
var html = template.HTML(title, list,
`
<h2>${title} 검색 결과</h2>
${view}
<br>
<img src="/images/search.jpg" style="width: 450px; display: block; margin-top" 10px">
`,
``,
auth.statusUI(request, response)
);
response.send(html);
});
});
});
module.exports = router;
쿼리값 추출이 오히려 검색 기능 구현보다 오래 걸렸던거 같다.
생활코딩 강의에서도 그렇고, 이전에는 url 모듈을 불러온 뒤 url.parse()를 사용했다.
근데 url.parse()라고 뜨기로 그 원인을 찾아보며 위와 같은 코드로 수정하였다.
https://velog.io/@satoshi25/url.parse-deprecated 이 글을 참고하였으며, searchParams에서 쿼리 값을 가져오기 위해서는 get() 함수가 필요했다.
나머지는 다 비슷하니까 이 정도만 적으면 될듯?!
'Javascript > Node.js' 카테고리의 다른 글
간단한 API 만들기 (0) | 2021.07.22 |
---|---|
pm2 명령어 (0) | 2021.07.22 |
Multi User (0) | 2021.07.19 |
Passport.js (0) | 2021.07.12 |
Express Session& Auth - session 미들웨어, 인증 구현 (0) | 2021.07.10 |