JS - 데이터의 값을 Falsy로 쓴 건에 대하여

kcarl·2022년 5월 21일
0
post-thumbnail

DB에 null로 저장돼요

몇일 전 심리 테스트같은 성향 테스트를 하나 제작했었다.
API로 값을 보내기 전 다음과 같은 안내를 받았다.

  • 답변의 값을 보낼 때는 첫번째는 0, 두번째는 1・・・ 형식으로 전달
  • 5번째 문제, 7번째 문제는 답변 선택이 아니니 빈 값으로 전달

console로 확인해보니 값도 잘 넘어가고 API 리턴값도 정상적으로 넘어와 이상이 없는줄 알았다.

그런데 백엔드 개발자분이 답변 선택 값 중 Null이 있다는 얘기를 해주셨다.
값은 분명히 잘 넘어가는데 왜 Null이 찍히는걸까?

이슈 재현을 하다보니 첫번째 답변 선택 시 Null이 찍혔다.
API로 답변 값을 보낼 때 number 타입으로 넘기는데,
number 0은 falsy한 값이라 문제가 되는 것 같았다.



거짓같은 값

MDN 문서(https://developer.mozilla.org/ko/docs/Glossary/Falsy)에 falsy라는 용어 설명이 있다. 다음은 8가지의 falsy다.

false			키워드 false

0				숫자 zero

-0				음수 zero

0n				BigInt. 불리언으로 사용될 경우, 숫자와 같은 규칙을 따름. 0n은 거짓 같은 값.

""				빈 string

null			null - 아무런 값도 없음

undefined		undefined - 원시값

NaN (en-US)		NaN - 숫자가 아님

여러 조건문을 만들어보며 참, 거짓은 기가 막히게 나눠봤지만
조건이 아닌 어떤 데이터의 값으로 사용할 때
값이 존재하지 않게되는 경우는 처음 겪어봤다.



어떻게든 0은 보내야한다

그래도 첫번째 선택 값은 0으로 보내야 하는 규칙은 바뀌지 않았다.

그렇다면 어떻게 보낼까? 답은 간단했다 데이터 type을 number에서 string으로 바꿔줬다. "0", "1"・・・ 식으로 보내니 해결이 됐다.

스크립트는 에러가 안나는데 데이터를 보낸 후 DB에서 확인 할 때 falsy한 값이 뜨면 데이터 타입을 확인해봅시다.

이로 인해 빠른 퇴근이 이루어지셨길 바랍니다.

profile
@hinokkitang

0개의 댓글