我正在运行 Firebase 并在实时数据库中保存我要加载的当前文件的文件名。然后我使用云功能创建缩略图。当我更改文件时,我正在尝试创建一个 Cloud Function 来删除缩略图吗?这就是我目前拥有的,我能够加载完整路径。 object
不可用,因为我无法加载存储桶。
exports.deleteThumbnails = functions.database.ref('/users/{userId}/avatar').onUpdate(event => {
const prevAvatar = event.data.previous.val();
const filePath = `${event.params.userId}/avatar/40_${prevAvatar}`;
console.log(`FilePath: ${filePath}`);
// const bucket = gcs.bucket(object.bucket);
// const file = bucket.file(filePath);
// const pr = file.delete();
return event;
});
最佳答案
如果您的完整路径是您将文件存储在 firebase 存储中的位置,那么以下代码应该会有所帮助:
var admin = require("firebase-admin");
var serviceAccount = require("path/to/serviceAccountKey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "<BUCKET_NAME>.appspot.com"
});
var bucket = admin.storage().bucket();
exports.deleteThumbnails = functions.database.ref('/users/{userId}/avatar').onUpdate(event => {
const prevAvatar = event.data.previous.val();
const filePath = `${event.params.userId}/avatar/40_${prevAvatar}`;
console.log(`FilePath: ${filePath}`);
return bucket.file(filePath)
.delete()
.then(() => {
console.log(`file deleted.`);
})
.catch(err => {
console.error('ERROR:', err);
});
});
要了解对文件的所有操作,请执行此操作:Google cloud storage Uploading, Downloading, and Deleting Objects并访问Firebase storage for admin sdk要了解 admin sdk 如何与存储一起工作,请按照以下步骤操作:
关于javascript - 如何删除路径在实时数据库中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48043030/