Regular Expression(정규식)은 문자열의 검색을 위해 많이 사용되는데요. 이 사이트에서 정규식과 문자열을 입력하고 그 결과를 확인할 수도 있고 다른 유저가 만든 정규식을 볼 수도 있습니다. 참고하시구요.
우리는 이 정규식을 이용해서 비디오 검색 기능을 만들어보도록 하겠습니다.
youtube
|controllers
*|videoController.js
|views
*|search.pug
videoController에서 search 함수를 아래처럼 수정하겠습니다.
$options: "i"
는 insensitive를 의미하며 대소문자를 구분하지 않고 title에 term을 포함하는 Video element를 반환합니다.export const search = async(req, res) => {
const { query:{ term } } = req;
let videos = [];
try{
videos = await Video.find({title :{$regex: term, $options: "i"} });
}catch(e){
console.log(e);
}
res.render("search", {videos, term});
}
if문을 사용해서 검색결과가 없을 경우에는 sorry멘트가 나오도록 하였구요. 그렇지 않을 경우에는 반환된 videos를 videoBlock을 이용해 보여줍니다.
extends layout/main
includ mixins/videoBlock
block content
.search__header
h3 searching for #{term}
.search__videos
if(videos.length === 0)
h5 sorry, no videos found
else
each video in videos
videoBlock(video)