4 글 보임 - 1 에서 4 까지 (총 4 중에서)
-
글쓴이글
-
2022년 7월 4일 21:17 #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를 보낼 수 있는 방법이 있을까요?
2022년 7월 4일 23:39 #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로 끼워 넣어버립니다 이거 괜찮은 방법일가여?
2022년 7월 5일 09:51 #38031
codingapple키 마스터res.json() 안에 array object 넣어서 유저에게 보낼 수 있습니다 리액트는 .innerHTML = 어쩌구 대신 해주는 라이브러리입니다
-
글쓴이글
4 글 보임 - 1 에서 4 까지 (총 4 중에서)
- 답변은 로그인 후 가능합니다.