생활코딩/node.js-mysql

검색 기능을 넣다.

7he8oy 2021. 1. 14. 17:37

모양은 매~~우 이상하지만 검색 기능을 넣어봤다.

해당 검색은 

이렇게 콤보박스로 어느 카테고리에서 검색 할 지 알려준다.

나는 search.js라는 것을 만들어서 사용하였다.

 

이 코드는 post 방식을 이용해서 검색 정보를 받은 후 table 형식으로 보여준다.

 

const qs = require('querystring');
const topic = require('./topic.js')
const template= require('./template.js')

exports.search = function(request, response){
  var body = '';
  request.on('data',function(data){
    body = body + data ;
  });
  request.on('end',function(){
    var post = qs.parse(body)
    if(post.cat==='title'){
      var cat = post.cat
    } else if(post.cat==='description'){
      var cat = post.cat
    } else if(post.cat ==='author'){
      var cat = 'name'
    } else {
      var cat = 'concat(title, description)'
    }
    db.query(`select topic.id, title, description, name, profile from topic left join author on topic.author_id=author.id`, function(error2,topics){
      if (error2) {
        throw error2;
      }
      db.query(`select topic.id, title, description, name, profile from topic left join author on topic.author_id = author.id where ${cat} like '%${post.keyword}%'`, function(error, results){
          if (error){
            throw error;
          }

        var title = 'Search Results'
        var list = template.list(topics)
        var html = template.HTML(title, template.table2(results), list,'')
        response.writeHead(200);
        response.end(html)

      });
    });
  });
}

그런데 어찌어찌 구현을 하고 나니 검색은 post방식보다 get 방식이 더 좋다고 한다.

구글링을 좀 해보니 검색 결과를 copy paste 하기 좋아서 그런 것 같다.

get 방식은 위 코드에서 데이터 모으는 코드를 지운 후 url의 querydata를 parse하는 것을 넣으면 될 것 같다.

'생활코딩 > node.js-mysql' 카테고리의 다른 글

페이지 기능구현 해보기(실패)  (0) 2021.01.14
node.js - mysql 수업을 마치며/ 더 해보면 좋을 것들  (0) 2021.01.12
sanitize-html  (0) 2021.01.12
SQL injection  (0) 2021.01.12
저자 관련 기능 구현  (0) 2021.01.12