
ํ์ฌ ์ฌ์ง์ ์ฒจ๋ถํ์ฌ ํธ์์ ์ฌ๋ฆฌ๊ณ ๋์ ์ญ์ ๋ฒํผ์ผ๋ก ๊ทธ ํธ์์ ์ญ์ ํ๋ฉด
ํ์ด์ด๋ฒ ์ด์ค ๋ฌธ์๋ฅผ ๋ณด์!
firebase > firebase Documtentation > build > storage > web > deleting files
์ฐธ์กฐ(reference)๋ฅผ ๋ง๋ ๋ค.delete() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค.// โ
web ver.9
import { getStorage, ref, deleteObject } from "firebase/storage";
const storage = getStorage();
// ์ญ์ ํ๋ ค๋ ํ์ผ์ ๊ฐ๋ฆฌํค๋ reference ๋ง๋ค๊ธฐ
const desertRef = ref(storage, 'images/desert.jpg');
// ํ์ผ ์ญ์ ํ๊ธฐ
deleteObject(desertRef).then(() => {
// ์ญ์ ์ ์ ์ฒ๋ฆฌ๋๋ฉด promise ๋ฐํ
}).catch((error) => {
// promise ๊ฑฐ๋ถ๋๋ฉด ์ค๋ฅ ๋ฐํ
});
์ญ์ ํ๋ ํ์ผ ๊ฐ๋ฆฌํค๋ ref๋ฅผ ๋ง๋ค๊ธฐ ์ํด์๋ url์ ์
๋ ฅํด์ผ ํ๋๋ฐ url์ ๋ฌด์์ ์ ์ด์ผ ํ ๊น?
tweetObj์ attachmentUrl์ด ์ญ์ ํ๋ ค๋ ๊ทธ ํ์ผ์ url ์ด๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํ๋ฉด ๋๋ค.
import { dbService, storageService } from "fbase";
import { deleteObject, ref } from "firebase/storage";
//์๋ต...
//๐ฅ ์ญ์ ํ๋ ค๋ ์ด๋ฏธ์ง ํ์ผ ๊ฐ๋ฆฌํค๋ ref ์์ฑ
//๐ฅ tweetObj์ attachmentUrl์ด ๋ฐ๋ก ์ญ์ ํ๋ ค๋ ๊ทธ url์
const desertRef = ref(storageService, tweetObj.attachmentUrl);
//ํธ์ ์ญ์
const onDeleteClick = async () => {
const ok = window.confirm("์ ๋ง ์ด ํธ์์ ์ญ์ ํ์๊ฒ ์ต๋๊น?");
//console.log(ok); //treu/false ๋ฐํํจ
if (ok) {
try {
//ํด๋นํ๋ ํธ์ ํ์ด์ด์คํ ์ด์์ ์ญ์
await deleteDoc(tweetTextRef);
//์ด๋ฏธ์ง ํ์ผ ์คํ ๋ฆฌ์ง์์ ์ญ์
await deleteObject(desertRef);
} catch (error) {
window.alert("ํธ์์ ์ญ์ ํ๋ ๋ฐ ์คํจํ์ต๋๋ค!");
}
}
};
์ค์ผ์ด!
์ฌ์ง์ ์ฌ๋ ธ๋ค๊ฐ ์ญ์ ํ๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ storage์์๋ ์ ์ญ์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.

ํ์ผ์ ์
๋ก๋ํ์ง ์๊ณ ๊ทธ๋ฅ ํ
์คํธ๋ง ์ด ํธ์์ ์ญ์ ํ๋ ์ฝ์์ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฌ๋ค.

attachmentUrl์ด ๋น์ด์๊ธฐ ๋๋ฌธ์ ๋ ๋ฒ์งธ await์์ desertRef๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฐ ์ค๋ฅ๊ฐ ๋จ๋ ๊ฒ์ด๋ค.
๋ ๋ฒ์งธ await์ if๋ฌธ์ผ๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์.
import { dbService, storageService } from "fbase";
import { deleteObject, ref } from "firebase/storage";
//์๋ต...
//๐ฅ ์ญ์ ํ๋ ค๋ ์ด๋ฏธ์ง ํ์ผ ๊ฐ๋ฆฌํค๋ ref ์์ฑ
//๐ฅ tweetObj์ attachmentUrl์ด ๋ฐ๋ก ์ญ์ ํ๋ ค๋ ๊ทธ url์
const desertRef = ref(storageService, tweetObj.attachmentUrl);
//ํธ์ ์ญ์
const onDeleteClick = async () => {
const ok = window.confirm("์ ๋ง ์ด ํธ์์ ์ญ์ ํ์๊ฒ ์ต๋๊น?");
//console.log(ok); //treu/false ๋ฐํํจ
if (ok) {
try {
//ํด๋นํ๋ ํธ์ ํ์ด์ด์คํ ์ด์์ ์ญ์
await deleteDoc(tweetTextRef);
//๐ฅ ์ญ์ ํ๋ ค๋ ํธ์์ ์ด๋ฏธ์ง ํ์ผ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฏธ์ง ํ์ผ ์คํ ๋ฆฌ์ง์์ ์ญ์
if (tweetObj.attachmentUrl !== "") {
await deleteObject(desertRef);
}
} catch (error) {
window.alert("ํธ์์ ์ญ์ ํ๋ ๋ฐ ์คํจํ์ต๋๋ค!");
}
}
};
reference๋ ์ด๋๊ฐ์ object๊ธฐ ๋๋ฌธ์ ํญ์ reference๋ฅผ ์ฐพ์~!