비동기 함수
//비동기 함수 생성 위해
import { createAsyncThunk } from "@reduxjs/toolkit";
//파이어베이스
import { firestore, } from "../../firebase";
import { collection, doc, setDoc } from "firebase/firestore";
//랜덤으로 숫자 생성
import { customAlphabet } from "nanoid";
//사용자 정보 가져오기 위해
import { getAuth } from "firebase/auth";
const addUserData = createAsyncThunk<
{ boardId: any; boarditem: UserData }, //함수가 반환하는 비동기생성자 함수 작업의 결과물의 타입을 지정
{ boardId: any; boarditem: UserData } //인자로 받는 데이터의 타입을 지정
>("user/fetchUserData", async (data, thunkAPI) => {
const { boardId, boarditem } = data; //data는 반환 되는 값, 타입과 동일 해야함
const { title, content } = boarditem;
const nanoid = customAlphabet("123456789", 8);
const id = nanoid();
const auth = getAuth();
const currentUser = auth.currentUser;
const userId = currentUser?.uid;
const userCollection = collection(firestore, "users");
const userDataCollrection = collection(
userCollection,
"userData",
userId as string
);
const dataIn = {
did: boardId,
index: id,
title: title,
content: content,
timedata: new Date(),
};
//이름 지어서 문서 생성
await setDoc(doc(userDataCollrection, id), dataIn);
//문서 이름 자동으로 생성
// await addDoc(userDataCollrection, dataIn);
// 반환할 데이터 형식
const responseData = {
boardId: boardId,
boarditem: {
did: boardId,
title: title,
content: content,
timedata: new Date(),
},
};
return responseData;
});
export default addUserData;
const { title, content } = boarditem;
-비구조화 할당 참고
material
nanoid
getAuth firbase 공홈 현재 로그인한 사용자 가져오기
파이어베이스 데이터 추가