firebase에 데이터를 저장하기전 body로 들어온 returnLogID가 없다면 color의 값으로 랜덤한 색상을 주고, 있다면 기존 데이터를 훑어 해당 returnLogID랑 같은 logID를 찾아서 logID의 color값을 returnLogID의 color값과 동일하게 주려고 하던 중 생긴 문제점들이다.
요청이 들어온 데이터를 넣기 전 기존 데이터를 훑기위해 onValue 함수를 작성했는데, 이 함수가 비동기로 실행이되어 color값으로 undefined가 들어갔다.
// 기존
onValue(db, () => {...})
...
color를 넣는 코드
// 수정
onValue(db, () => {... color를 넣는 코드}
onValue함수의 2번째 인자로 콜백함수가 들어가는데 color를 넣어주는 코드를 포함한 응답부분까지 콜백함수안으로 넣어줌으로써 color값이 들어갈 수 있도록 작성했다.
위의 방법으로
{
onlyOnce: true
}
자식의 값으로 객체를 저장할때,
{"1": "하나", "2": "둘", "3": "셋"}
위와 같이 키로 숫자만 넣고 onValue 함수로 데이터를 불러오면
[empty, '하나', '둘', '셋']
키의 숫자가 배열의 인덱스에 맞춰 값이 나온게 된다.
하나라도 숫자로 안들어갈 경우 객체로 나온다.
{"1": "하나", "2": "둘", "3": "셋", "넷": "넷"}