본문 바로가기

컴퓨터/웹 : JS29

[Node.js](개인 프로젝트) 카카오 지도 연동하기 지도 연동 오늘은 드디어 지도를 넣을 예정이다. 문제는 네이버 지도는 이제 지원하지 않고, 구글 지도는 유료라는 것이다. 구글 지도를 넣고 싶은데 문제는 접근이 0이라도 약간의 돈이 든다. 나는 지금 만드는 사이트를 실제로 호스팅하고 광고까지 넣을 예정이지만(물론 수익이 크게 발생할 거라는 생각은 하지 않는다. 우선적으로 내가 타겟으로 하는 지역이 내 대학 주변 뿐이기도 하기 때문이다.) 광고 수익이 지도 발생 수익을 상회할 거라는 계산이 안 든다. 게다가 만약 운이 좋아서 사용자가 있다? 애매하게 사용자가 붙으면 DB를 띄워주는 값과 호스팅하는데 쓰이는 값, 사진업로드 API를 이용하는 값까지 내야한다. 현재 블로그에 애드센스를 이용하기에 광고료에 대한 잣대가 대충 있긴 하다. 600뷰에 2달러 정도라.. 2023. 3. 4.
[Node.js](개인 프로젝트) 쇼페이지 완성, 별점 표시 쇼페이지 오늘은 axios통신을 모두 끝내고 show페이지의 요약 후기 메뉴탭을 완성시키려고한다. 우선 점수의 평균을 구해서 가져와야하는데, 이미 모델에서 가상 속성으로 추가해 놓았기 때문에 가져다 쓰면 된다. cafeSchema .virtual ('ratingAVG').get (function () { const comments = this .comment || []; const numComments = comments .length ; const ratings = comments .map (comment =>comment .rating ? comment .rating :{ taste :0 , atmosphere :0 , price :0 }); const sum = { taste :ratings .re.. 2023. 2. 27.
[Node.js](개인 프로젝트)로그인과 페이지 연동 로그인 페이지 연동 오늘은 어제 구현한 로그인을 바탕으로 리액트 페이지를 보완할 것이다. 댓글 기능을 유저 id와 연동시키고, 댓글 삭제 및 평점 기능을 지원하도록 한다. 이를 위해 또 axios를 이용할 것이다. 즉, 페이지가 로드되면 현재 유저가 로그인 상태인지 아닌지, 로그인 상태라면 _id값이 뭔지 서버로 요청해서 페이지에서 가지고 있는다. 그리고 댓글은 로그인 상태에서만 쓸 수 있게 되며, 서버로 댓글을 DB에 저장하라는 명령을 또 전달해야한다. 그다음 다시 리액트 페이지에서 DB값을 읽어와서 해당 DB를 기준으로 페이지를 다시 렌더링 해야겠다. 원래 이렇게 쓸데 없이 비용이 많이 드는 방식으로 다들 구현하나, 하고 다른 사람들의 코드를 조금 살펴 봤는데, 별 다른 대안은 없을 듯 하다. 이 방.. 2023. 2. 26.
[Node.js](project)로그인 구현/passport/session 로그인 구현 오늘은 이제 로그인 구현을 할 차례이다. 이를 위해 스키마를 다시 들여다봤다. 몽구스 스키마를 수정하던 중 카페 스키마에 rating을 넣었는데, 이를 동적으로 바꾸고자 했다. 즉 user가 남긴 comment내의 rating점수의 평균을 자동으로 avgRating이라는 이름의 필드에 계산해주면 참 편하겠구나 했다. 이 방법 중 하나로 버츄얼 속성이라는 것이 있다. 이 가상 속성이라는 것은 필드에 할 작업(?)을 미리 정의해 놓을 수 있다. 예를 들어 a라는 필드 값이 b의 2배가 되게 하라! 하면 모델이 생성될 때 그렇게 된다. 그래서 약간 조사 후 알게 된 것이 가상 속성의 get함수가 호출되는 경우에만 필드에 내가 정의한 속성이 적용된다. 따라서 내가 특정 필드를 업데이트하는 것만으로 .. 2023. 2. 22.