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

home2 게시판 Node.js, Express 게시판 nodejs 에서 client로 array보내기

nodejs 에서 client로 array보내기

  • 이 주제에는 3개 답변, 2명 참여가 있으며 대영3 년, 1 월 전에 전에 마지막으로 업데이트했습니다.
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 글쓴이
  • #38005

    대영
    참가자
    
    서버에서 
    db.collection('post').find().toArray
    를 실행하면
    db에 있는 여러 어레이가 가져와집니다.
    
    가져온 array는 
    [
      { _id: 2, title: '우유마시기', date: '1' },
      { _id: 3, title: '우유마시기', date: '2' },
      { _id: 4, title: '우유마시기', date: '3' },
      { _id: 5, title: '우유마시기', date: '4' },
      { _id: 6, title: '우유마시기', date: '5' },
      { _id: 7, title: '우유마시기', date: '6' },
      { _id: 8, title: '우유마시기', date: '7' }
    ]
    이런식으로 콘솔에 뜹니다
    
    저 데이터를 data1 변수에 담아서 (var data1 = rs)
    res.status(200).send(data1)
    를 하면 클라이언트쪽의 ajax의 response값은 빈값을 받게 됩니다.
    
    혹시나 싶어서 JSON.스트링기파이(data1) 로 보내도 빈값이 보내지거나
    에러가 떴죠.
    
    또 혹시나 싶어서 res.status(200).send("data1")
    아예 스트링 5글자를 보내니 
    클라이언트에서 잘만 읽어옵니다. 아주 잘 가져와요.
    
    하지만 array 자체는 못들고옵니다.
    같은 localhost이니 cors 이슈도 아닐꺼구요.
    
    클라이언트쪽으로 저 어레이를 보내서
    새로고침 없이 목록만 innerHTML로 리렌더 하려 하는데 
    서버에서 클라이언트로 array를 보낼 수 있는 방법이 있을까요?
    
    
    
    
    
    
    
    
    #38015

    대영
    참가자
    아 님 알아냈어요
    
    db.collection('post').find().toArray((err3,rs3)=>{
                    if(err3) return console.log(err3)
                    let data1 = rs3
                    console.log(rs3)
                    let data2 = [];
                    console.log(typeof(data1))
                    for(let i of data1){
                        data2.push(JSON.stringify(i))
                    }
                    console.log(data2)
                    res.setHeader('Content-Type', 'application/json');
                    res.end(JSON.stringify(data2));
                    // res.status(200).send(data1)
                });
    JSON화 해서 res.end로 보내주면 됩니다.
    todolist 항목 삭제하자마자 바로 최신 목록 array를 마치 PHP의 echo처럼 쏴버려서 
    그거 다시 innerHTML로 박아넣으면 되네요
    jquery fadeOut 하려다가 진짜 데이터 보여주고싶은 마음이 커서 찾아봤는데 
    이게 옳은 방법인지 몰겠어요
    
    
    보안적으로 이방법이 맞는 방법인가 하는 의문이 들어요 
    react 같은 경우는 setState로 JSX에 바인딩해서
    실시간으로 해당 파트만 리렌더링 되는데 
    이 방법은 걍 innerHTML로 어거지로 끼워넣는 방식이라 
    이거 괜찮은 방법인지 몰겟네여 보안이든 뭐든...
    
    let li = ``;
            for(let i of array){
              li = li+ `<li class="list-group-item"><h4>제목: ${i.title}</h4>
          <p>마감날짜: ${i.date}</p>
          <button type="button" data-id="${i._id}" onclick="onDelete(event)">삭제</button></li>`
            }
            document.getElementById('list-group').innerHTML = li;
    클라이언트는 이 코드로 받아온 json 파싱해서 innerHTML로 끼워 넣어버립니다
    
    이거 괜찮은 방법일가여?
    
     
     
     
     
     
     
     
     
     
     
    #38031

    codingapple
    키 마스터
    res.json() 안에 array object 넣어서 유저에게 보낼 수 있습니다
    리액트는 .innerHTML = 어쩌구 대신 해주는 라이브러리입니다
    #38053

    대영
    참가자
    감사합니다. innerHTML이라는 방법자체는 괜찮은 방법인것이죠?
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
  • 답변은 로그인 후 가능합니다.

About

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

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

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