더북(TheBook)

createPost 함수에서 userUserContext에 담긴 현재 사용자의 정보 객체이고, photoURL은 업로드할 이미지의 주소, description은 이미지에 대한 설명 텍스트입니다.

createdAt 값의 경우 firestore.FieldValue.serverTimestamp() 값으로 설정해줬는데, 이렇게 하면 Firestore에 데이터가 등록되고 나서 Firestore 서버 측에서 해당 데이터의 값을 다시 지정해줍니다. 만약 createdAt 값을 직접 넣어주면 데이터 생성 날짜가 서버의 시간이 아니라 사용자의 시간이 되므로 정확하지 않은 시간이 등록될 수 있겠죠? 그래서 서버 측에서 값을 정하도록 설정한 것입니다.

이 함수가 준비됐다면 포스트 작성 화면에서 Firebase Storage에 이미지를 업로드하고 방금 만든 함수를 호출해줍시다. 이미지를 업로드하는 방법은 SetupProfile 컴포넌트에서 했던 것과 동일합니다. 경로만 다른데, 사진의 업로드 경로는 `/photo/${user.uid}/${v4()}.${extension}`으로 하겠습니다. 여기서 v4()는 UUID v4입니다. 해당 고유 ID를 생성하기 위해 라이브러리를 설치해주세요.

$ yarn add uuid react-native-get-random-values
$ npx pod-install

react-native에서 uuid 라이브러리가 작동하려면 사전에 react-native-get-random-values를 index.js에서 불러와야 합니다.

index.js

import {AppRegistry} from 'react-native';
import App from './App';
import {name as appName} from './app.json';
import 'react-native-get-random-values';

AppRegistry.registerComponent(appName, () => App);
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.