일단 지우고 수정하려면 데이터를 밀어넣어야겠지요 …
데이터 삽입과 수정
// doc(firestore, 경로, pathSegments)
const tweetTextRef = doc(dbService, "tweets", `${tweetObj.id}`);
// 제출 클릭시 동작
cosnt onSubmit = async (e) =>{
e.preventDefault();
// updateDoc(참조, 데이터)
// doc를 업데이트해줌
await updateDoc(tweetTextRef, {text : newTweet});
setEditing(false);
}
const onChange = (e) => {
const {
target: { value },
} = e;
// 수정란이 변화할때마다 input의 value값을 변경해서 저장한다
setNewTweet(value);
};
- doc : 지정된 절대경로에서 문서를 참조하는 DocumentReference 인스턴스를 가져옴
- updateDoc : 지정된 documentReference가 참조하는 문서의 필드 업데이트. 존재하지 않는 문서에 적용하면 업데이트에 실패한다.
- updateDoc Link
데이터 제거
// ref(스토리지, Url)
const desertRef = ref(storageService, tweetObj.attachmentUrl);
const tweetTextRef = doc(dbService, "tweets", `${tweetObj.id}`);
const onDeleteClick = async () => {
// 삭제 안내 띄우기
const ok = window.confirm("delete?");
if (ok) {
try {
// 문서 삭제
await deleteDoc(tweetTextRef);
// 객체가 남아있으면
if (tweetObj.attachmentUrl !== "") {
// 그것도 삭제
await deleteObject(desertRef);
}
} catch (error) {
window.alert("delete error");
}
}
};
- deleteDoc Link
- ref : 주어진 Url에 대한 storageReference 반환
- ref Link