如何删除实时数据库中路径的文件?

时间:2017-12-31 13:54:52

标签: javascript firebase firebase-realtime-database firebase-storage google-cloud-functions

我正在运行Firebase,在实时数据库中,我保存了我想要加载的当前文件的文件名。然后我使用Cloud功能创建缩略图。当我更改文件时,我正在尝试创建一个云功能来删除缩略图?这是我目前拥有的,我能够加载完整的路径。 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;
});

1 个答案:

答案 0 :(得分:3)

如果您的完整路径是将文件存储在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如何使用存储,请按照以下步骤操作: