问题描述
在我的云函数中,我试图根据其 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,因为它会在编译期间捕获类似的错误。