
공구 종료하기 기능은 사실 수정 기능과 거의 동일하다고 볼 수 있어서, 수정 기능에 사용한 코드를 토대로 제작을 했는데 아무리 해도 제대로 값이 들어가지 않는 오류가 있었다. 때문에 가져오는 값 또는 보내는 값에 뭔가 문제가 있는지 살펴보았다.
문제의 원인은 역시 가져온 값을 어떻게 재구성하여 수정 로직으로 보내느냐에 대한 문제였다. 우선, tanstack query를 이용하여 post에 대한 정보를 가져올 때, 연동된 group_applications에 대한 값도 동시에 가져오게 된다. 그런데 나는 필요한 값을 하나하나 넣어준 수정 로직과 달리 공구 종료 로직에서 수정된 값으로 보낼 객체를 다르게 제작했다.
const finishGroupPost: TNewGroupPost = {
...groupPost
is_finished: true,
};
수정할 객체에는 연동된 group_applications 값이 없어야하는데, 그냥 groupPost를 통째로 넣고 거기에 is_finished 값만 바꿔주니 당연히 제대로 들어가지 않았던 것.
때문에 아래 코드와 같이 변경했다.
const finishGroupPost: TNewGroupPost = {
id: groupPost.id,
user_id: groupPost.user_id,
title: groupPost.title,
start_date: groupPost.start_date,
end_date: groupPost.end_date,
people_num: groupPost.people_num,
price: groupPost.price,
content: groupPost.content,
item: groupPost.item,
link: groupPost.link,
img_url: groupPost.img_url,
is_finished: true,
};
필요한 값만 빼서 넣어주는 방식으로 변경을 했다. 사실 group_applications만 없으면 되기에 이렇게 하나하나 다 넣어주는게 그다지 효율적이진 않은 방법인 것 같아서, 이 코드를 더 효율적으로 만드는 방법을 생각해보아야할 것 같다.
다행히 내가 맡은 부분의 기능을 거진 다 끝마쳤다. 물론 모바일 디자인이 나올 경우 반응형도 해야하고 로그인 기능이 완료되면 유저 정보도 넣어줘야하고 남은 부분은 많긴 하지만 큼직하게는 마무리가 되어서, 내일부터는 다른 분들을 도와드리거나 하면서 최대한 프로젝트의 완성도를 빠르게 높여야겠다.