안녕하세요~ 아래와 같은 자동완성 검색을 구현하려고 합니다! sequelize의 Op.like
기능을 사용 하려고 합니다.
router.get('/:search',async (req, res, next) => {
try {
const search = decodeURIComponent(req.params.search);
const select = decodeURIComponent(req.query.searchName);
const where = {};
if(!search.trim()) {
return res.status(403).send('빈칸은 검색이 안되요')
}
if(select === '제목') {
where.title = {[Op.like] : `%${search}%`};
}
if(select === '내용') {
where.content = {[Op.like] : `%${search}%`};
}
const posts = await Post.findAll({
where,
order : [['createdAt', "DESC"]],
include : [{
model : Hashtag
}]
})
if(!posts) {
return res.status(403).send('존재하지 않는 게시물...')
}
res.status(201).json(posts)
} catch (err) {
console.error(err)
next(err)
}
})
이런식으로 하면 된답니다!
1.%search
2.search%
3.%search%
이런식으로 총 3개지 방법으로 찾으려고자 하는 문자열이 포함된 것을 보여줍니다.
%search
는 search 앞에 어떤 문자가 와도 search 문자를 찾고,
search%
는 search를 먼저 찾고, 그 뒤에 오는 문자가 오는 것은 신경을 안씁니다.
%search%
는 어떤 문자안에 찾고자 하는 search가 있으면 다 찾는 것을 의미합니다.