자동완성 검색 구현하기

Jaewoong2·2020년 8월 4일
0

boilerplate

목록 보기
12/13

안녕하세요~ 아래와 같은 자동완성 검색을 구현하려고 합니다! 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가 있으면 다 찾는 것을 의미합니다.

profile
DFF (Development For Fun)

0개의 댓글