10.04 댓글 강의

복합쿼리

복합쿼리는 firestore에서 한 콜렉션의 여러 필드를 한 쿼리로 묶을 때 필요하다.
-> 여러 필드 내용을 가지고 쿼리를 쓰고 싶을 때 쓴다.

게시글에 아이디로 조건을 걸어 쿼리를 날린다.
작성한 일시 insert_dt로 정렬하기 위해 복합쿼리를 사용.

댓글

  • 댓글 뷰 > 기능 > 댓글 텍스트를 리덕스에 삽입 > 파이어 스토어에 저장 > 리덕스에 데이터 업데이트

  • 댓글 데이터 추가할 때 게시글 정보의 댓글 갯수 + 1을 해줘야 한다.

리덕스에 데이터를 저장하는 이유
다음번에 또 쓰기 위해

A - B - A 로 페이지를 이동할 때 매번 요청을 하는건 비효율적.
=> 각 게시글에 맞는 댓글 리스트를 저장할 공간을 만들어 저장한다.

댓글알림

파이어베이스의 실시간 데이터 베이스를 사용해서 데이터가 실시간으로 업데이트 되었음을 알려주는 리스너를 붙인다.

필요한 것은?

  • 내가 작성한 게시글엔 내가 쓴 댓글은 알림이 가지 않아야 한다.
  • 내가 아닌 사람이 댓글을 달면 파이어베이스에 저장해둔 { noti: {read:false} }의 false값이 true로 바뀌어야 한다.

Header, NotiBadge, firebase, comment,


키 프레스 이벤트

엔터키를 눌렀을 때에도 댓글 작성이 되게한다.

이런 이벤트를 키 프레스 이벤트라고 말한다.

onKeyPress 를 사용.

onKeyPress={(e) => {
            if(e.key === "Enter"){
              onSubmit(e);
            }
          }}

const 관련 에러

Unhandled Rejection (ReferenceError): Cannot access 'post' before initialization

초기화 전에는 게시물에 액세스 할 수 없다.

const post = getState().post.list.find(l => l.id === post.id);

변수 post_id 를 post.id 로 오타를 내버려서 위의 에러가 발생했다.

const로 선언된 변수는 (=) 우측에 있는 것을 먼저 평가한 후 왼쪽의 변수에 담는데
우측의 내용을 평가할 때 존재하지 않는 변수(post)의 프로퍼티에 접근을 하려니 위의 에러 메세지가 뜬 것이었다.
const는 선언, 할당, 초기화가 동시에 되어야 함을 상기시키자~!

오타도 조심하자 ㅎㅎ..



오늘의 TMI

  • 역시 강한 사람이 끝까지 남는게 아니라 남은 사람이 강한 사람..
  • 방향이 틀린 것은 아닌 것 같으니 고만 흔들리고 킵 고잉~~
  • 역시 삽질로 얻는게 훨씬 많다~
  • 오타를 조심하자고 해놓고 또 오타로 시간을 버렸다. 하 ~~~

좋은 웹페이지 즐겨찾기