- `post /workspace/:projectURL/kanban/:part` 요청 로직 수정 (이하 `editKanbanPart`로 표기)
part 이름을 수정하면 자꾸 이미 존재하는 part라는 에러가 발생했습니다.
알고보니 `controllers/workspace/socketKanban.ts`의 `joinPart` 이벤트에서 DB에 존재하지 않는 part에 들어가게 되면 자동으로 그 이름을 DB에 추가해주는 로직이 있었고 클라이언트에서 part 이름을 수정할 때 `editKanbanPart` 요청과 `joinPart`를 동시에 실행시키고 있었습니다.
`joinPart` 이벤트가 먼저 실행(수정하는 이름으로 된 part로 입장할 때 그 이름을 DB에 저장)된 이후에 `editKanbanPart` 요청이 실행되었는데(socket 통신이 express보다 빠름) 이때에는 수정하려는 이름이 이미 DB에 존재하고 있었기에 계속 'already existed error'가 발생한 것이었습니다. 그래서 `joinPart`에서 DB에 저장하는 부분을 삭제했더니 part 이름 수정이 잘 되는 것을 확인할 수 있었습니다.
위에 언급한부분을삭제해도되는이유는`joinPart`이벤트가발생할때에는이미DB에존재하는part로접속한다는것이보장되어있기때문에(처음에part목록을내려주고그목록내에서버튼을클릭하여part이동을하도록구현되어있음) DB에존재하지않는이름을가진part로join하는경우는고려하지않아도됩니다.
오늘의 프로젝트에서 힘든 점은 무엇인가요?
▷ socket.io에서 emit 보내기
한 유저가 채팅 메시지를 작성하면 다른 유저들에게 그 채팅 메시지를 보내 화면에 표시하도록 되어있었습니다(`sendMessage`).
그런데 채팅 메시지를 수정/삭제를 위해 그 채팅 메시지의 id를 알려줄 필요가 생겼고(id를 사용하여 DB에 접근할 수 있다) id를 작성자에게 보내주도록 코드를 보완해야 했습니다(`nowMessageId`). 하지만 실제로 테스트 해보니 하나만 보내지거나 둘다 보내지지 않는 문제가 생겼습니다.
여러가지 방법을 시도했으나 계속 실패하던 도중 공식문서에서 해답을 찾을 수 있었고 공식 문서에 나온 대로 emit을 수정하여 시도했더니 성공했습니다.