从 url Firebase Storage 中删除图片

问题描述

在我的云函数中,我试图根据其 url 删除图像,但我认为我没有正确使用 API,因为我收到错误

const admin = require('firebase-admin');

exports.deleteImageWhenOfferDeleted = functions.firestore 
  .document('offers/{offerId}')
  .onDelete(async(snap,context) => {
    console.log('----------------start function--------------------')
    const deletedOffer = snap.data();
    var imageUrlToDelete = deletedOffer.imageUrl;
    await admin.storage.getPathStorageFromUrl(imageUrlToDelete).delete();

function getPathStorageFromUrl(url){
    const baseUrl = "https://firebasestorage.googleapis.com/v0/b/muslim-coloc.appspot.com/o/";
    let imagePath = url.replace(baseUrl,"");
    const indexOfEndpath = imagePath.indexOf("?");
    imagePath = imagePath.substring(0,indexOfEndpath);
    imagePath = imagePath.replace("%2F","/");
    return imagePath;
}

解决方法

我认为您在 storage 字后缺少括号。 您需要获取存储对象的实例。

admin.storage.getReferenceFromUrl(...)

应该

admin.storage().getReferenceFromUrl(...)

顺便说一句:考虑使用 TypeScript,因为它会在编译期间捕获类似的错误。