• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Node.js, Express 게시판 search index 검색기능 react 와 연동하기

search index 검색기능 react 와 연동하기

5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 글쓴이
  • #44889

    김지우
    참가자
    선생님의 유익한 강의 정말 감사하게 듣고 있습니다. 하지만 실전은 여전히 힘드네요..
    
    <Form className="d-flex"
    onChange={(e)=>{
     e.preventDefault();
    검색변경(e.target.value);
     console.log(e.target.value)}}> 
     <FormControl
    type="search"
    className="me-1"
    placeholder="Hochony Shop"
    aria-label="Search"
    size="sm"
    style={{ width: '9rem' }}
    />
     <button className="buttonSearch" type="submit"
    >
     <FontAwesomeIcon icon={faMagnifyingGlass} size="lg"/></button>
     </Form>
    
    위와 같이 React bootstrap 에서 Form 컴포넌트를 활용해서 여기에 입력한 값을 [검색, 검색변경] 이란 state로 저장했습니다.
    콘솔에도 잘 뜹니다.
    이제 버튼을 누르면 그 값을 보내서 그걸 토대로 search를 해야 하는데 여기서 막혔습니다. 
    (질문 1. Form 컴포넌트 안에 버튼을 넣었다지만 이 버튼에 submit 기능이 잘 되는 건지도 사실 잘 모르겠습니다.)
    
    질문 2. 그래서 그 값을 mongodb search index를 활용해서 get 요청을 하려는데 아래의 server.js 코드를 어떻게 고쳐야 할지 잘 모르겠습니다.
    쿼리문이 아닌데 저렇게 입력하면 안될것 같은 느낌이 듭니다.
    (이 부분이 해결되면 App.js에서 axios 로 오브젝트 받아온 뒤 state 변경해서 검색한 걸 띄워주는 건 할 수 있을 것 같습니다!)
    
    app.get('/search', function(요청, 응답){
    let 검색조건 = [
     {
    $search: {
    index: 'titleSearch',
    text: {
    query: 요청.query.value,
    path: ['title', 'content']
     }
     }
     }
     ] 
     db.collection('Data').aggregate(검색조건).toArray(function(에러, 결과){
     console.log(결과);
     응답.json(결과);
     })
    })
    
    
    
    
    #44940

    codingapple
    키 마스터
    리액트에선 폼전송말고 ajax로 서버와 통신하면 됩니다 
    버튼누르면 /search로 get요청하는데 url 뒤에 쿼리스트링으로 ?value=검색어 입력해주면 될듯요
    #44952

    김지우
    참가자
    그래서 계속 이상하게 리프레쉬가 되었었군요..ㅠㅠ
    버튼을 그래서 <Form> 바깥으로 빼고 axios로 get 요청을 해보았더니 
    버튼을 누르면 뭔가 요청이 되는 듯 합니다. 
    그런데 빈 어레이만 콘솔에 뜨고 화면의 상품목록도 마찬가지로 빈 공간으로 바꿔져서 나옵니다
    어디가 잘못된 걸까요?
    (윗 질문의 server.js 코드는 그대로 입니다)
    
    <button type="search"
    className="me-1 buttonSearch"
    size="sm"
    style={{ width: '3rem' } }
    onClick={() => {
     axios
     .get('/search?value=' + {검색})
     .then((result) => {
     console.log(result.data);
    hochony변경([...result.data]);
    더보기변경(false);
     })
     .catch(() => {
     console.log("불러오기 실패!");
     });
     }}
    >
    
    #44988

    codingapple
    키 마스터
    {검색}
    변수에 중괄호는 없앱시다
    #45027

    김지우
    참가자
    넵 성공적으로 해결했습니다! 감사합니다!!
5 글 보임 - 1 에서 5 까지 (총 5 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠