해결된 질문
21.10.03 22:16 작성
·
125
0
// onDelete in MsgList.js
...
console.log(typeof id) // number
const receivedId = await fetcher("delete", `/messages/${id}`, {
params: { userId },
});
// delete handler in messages.js
const targetIndex = msgs.findIndex((msg) => msg.id === id);
console.log(typeof msg.id, typeof id) // number, string
안녕하세요,
강의에서와는 달리 제 코드에서는 DELETE시 처음부터 서버에서 에러가 발생하여 디버깅 해보니 DELETE 핸들러에서 msg.id는 숫자인데 params.id는 문자열로 들어오고 있습니다.
클라이언트 onDelete에서 보내는 id를 typeof 로 출력해보면 타입이 숫자여서 이해가 어렵습니다.
강의와 똑같이 코드 작성한 것 같은데 어디서 비롯된 문제인지 파악이 어려워 질문 남깁니다. 감사합니다.
답변 2
1
2021. 10. 04. 15:36
네, 답변 감사드립니다.
처음 json 데이터를 만드는 방법부터 코드를 똑같이 작성한 것 같은데, 왜 제 db에는 "id"값이 숫자로 저장되어있는지가 파악이 어려운 부분이었습니다. 좀 더 살펴봐야겠네요. 감사합니다~
1
2021. 10. 04. 11:02
12분 45초 즈음부터 관련한 문제사항의 해결을 하고 있습니다.
제 경우에는 db에 [{ "id": "1", ... }] 로 저장되어 있어서 서버에서는 문제가 없고 클라이언트에서 문제가 되었는데,
만약 질문하신 분의 db에는 [{ "id": 1, ... }] 로 되어있다면
database에 저장된 형태가 다르기 때문에 서버에서부터 문제가 발생했을 수 있겠네요.
어느쪽이든 해결하는 방법은 마찬가지입니다. 서로 다른 타입을 동일하게 맞춰주기만 하면 돼요.
나중을 생각해서 문자열로 형변환하면 되겠지요.
2021. 10. 04. 19:35
강의를 다시 들어보니 routes 정의에서 messages.json의 id를 문자열로 직접 바꾸는 부분이 있었는데 이 부분을 놓쳤던 것 같네요 😅 해결 되었습니다