<iframe width="560" height="315" src="https://www.youtube.com/embed/dtGsIBTjzi0" frameborder="0"></iframe> <div><br></div> <div>위와 같이 동작할줄은 생각도 못했습니다. 위 동영상은 장바구니를 들어갔을때 내가 장바구니를 담은 정보를 보여주는 화면입니다.</div> <div>그런데 보는거와같이 매우 늦게 화면이 출력됩니다. 어? 왜이렇게 느리지하고선 server쪽을 살펴봤습니다. 아뿔사 </div> <div>server에서 for문으로 쿼리를 보내고 받기를 했는데... server에서 쿼리를 주고받는 속도가 console.log("aaaaaaaa"); 가뜨는 속도처럼</div> <div>0.3초정도 가량 소비가 됩니다...... </div> <div><br></div> <div>왜 여기서 server로 쿼리를 for문으로 날렸느냐? 라는 의문이 드실꺼 같습니다.</div> <div><br></div> <div>우선 저는 장바구니를 세션으로 담았습니다. 담는 방법은 아래와 같습니다.</div> <div><div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201508/1440999810S22uLXnDPnnpew3zX4JwSCBCi.png" width="800" height="40" alt="제목 없음.png" class="chimg_photo" style="border:none;"></div><br></div> <div>장바구니는 무한대로 담을수 있기 때문에 위처럼 했습니다. 결과값을 보자면 장바구니에 물건을 5개 담았을시</div> <div><br></div> <div>cart_info1 : 장바구니PK & 물품PK & 옵션PK & 옵션2PK & 수량 & 총가격(수량*물품가격) & 서버시간 & 타입(new면 입력 delete면 삭제);</div> <div>cart_info2 : 장바구니PK & 물품PK & 옵션PK & 옵션2PK & 수량 & 총가격(수량*물품가격) & 서버시간 & 타입(new면 입력 delete면 삭제);</div> <div>cart_info3 : 장바구니PK & 물품PK & 옵션PK & 옵션2PK & 수량 & 총가격(수량*물품가격) & 서버시간 & 타입(new면 입력 delete면 삭제);</div> <div>cart_info4 : 장바구니PK & 물품PK & 옵션PK & 옵션2PK & 수량 & 총가격(수량*물품가격) & 서버시간 & 타입(new면 입력 delete면 삭제);</div> <div>cart_info5 : 장바구니PK & 물품PK & 옵션PK & 옵션2PK & 수량 & 총가격(수량*물품가격) & 서버시간 & 타입(new면 입력 delete면 삭제);</div> <div><br></div> <div><br></div> <div><br></div> <div>이런식으로 세션이 쌓이게 됩니다. 그리고 장바구니 페이지로 넘어가게 되면 server로 cart_info1~5까지의 정보를 붙여서 보내게 됩니다.</div> <div>server쪽에 split 함수를 써서 1차적으로 5개를 나누고 2차적으로 split'&' 로 나누어져서</div> <div>각 물품의 PK값을들 가지고 오게 됩니다. 쉽게말해서</div> <div><br></div> <div>// 1차 split나누기 생략</div> <div>// 1차 split으로 나누어서 for문이 5번 돌게 됩니다.</div> <div>for(var i=0; i<total_info.length; i++){</div> <div> cut = [];</div> <div> cut = String.<span style="font-size:9pt;line-height:1.5;">total_info[i].split("&"); // 이렇게 하게되면 cut[1]~cut[7] 까지 장바구니,물품,옵션등등의 PK를 가져옵니다.</span></div> <div><span style="font-size:9pt;line-height:1.5;"><br></span></div> <div><span style="font-size:9pt;line-height:1.5;"><span class="Apple-tab-span" style="white-space:pre;"> </span>// 쿼리 5번 날리기</span></div> <div><div> c.query(query.be_cart_list , [ cut[1],cut[2],cut[3],cut[4],cut[5],cut[6],cut[0] ]).on('result', function (res) {</div> <div> res.on('row', function (row) {</div> <div> sending.push(row);</div> <div> });</div> <div> }).on('end', function () {</div> <div> count ++;</div> <div> if(count == parseInt(total_info.length)-1){</div> <div>// 마지막 쿼리일때 5번 날렸던 쿼리에 값을 다 쌓아둔후 클라이언트에 보낸다.</div> <div> obj = {sending: sending};</div> <div> res.send(200, obj);</div> <div> }</div> <div> });</div></div> <div>};</div> <div><br></div> <div>이렇게 server에서 쿼리를 5번 날린후 각 쿼리의 값들을 쌓아뒀다가 마지막 쿼리가 끝난 시점에 클라이언트로 보내게 됩니다.</div> <div>그런데 이 5번 날리는게.. 생각보다 엄청 오래 걸려서 너무 당황스럽습니다.</div> <div>쿼리문으로 보자면</div> <div><br></div> <div><div style="text-align:left;"><img src="http://thimg.todayhumor.co.kr/upfile/201508/14410004439h28cZgX9UhS2AuudHMK9r.jpg" width="800" height="203" alt="캡처.JPG" class="chimg_photo" style="border:none;"></div>이렇게 작성 했습니다. 결과값은 항상 1개의 row만 나오게 됩니다. 저 쿼리문을 5번 호출해서 1개씩 값을 server에서 붙여넣기로 했습니다.</div> <div><span style="font-size:9pt;line-height:1.5;">for문으로 1개씩 row를 구해서 server에 다 더하고 보내는 식으로 한건데...</span></div> <div>그런데 이게 문제가 된다면...... server에서 1개의 쿼리를 호출하고 쿼리에서 for문을 돌려서 나온값을 전달하는게</div> <div>가장 좋은 방법일까요? 제가 쿼리에서 for문을 안돌린 이유가</div> <div><br></div> <div>server에서는 split를 이용하여 자르고 for문을 돌릴수 있지만 쿼리에서는 이게 가능한가? 해서 server에서 간단히 돌렸던 거였습니다.</div> <div>위와같은 방법은 많이 잘못된 걸까요?</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.