【问题标题】:How do I delete a file who's path is in Real Time DB?如何删除路径在实时数据库中的文件?
【发布时间】:2018-06-11 02:24:21
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的提示。获取此代码并出错。 TypeError: admin.storage is not a function
    • 可以发一下package.json文件吗?因为在我的代码中我刚刚完成了 var admin = require("firebase-admin"); var bucket = admin.storage().bucket();和exports.deleteThumbnails......它工作正常。
    • 哦,好吧......很可能我正在运行旧包:{“name”:“functions”,“description”:“Cloud Functions for Firebase”,“dependencies”:{“@google -云/存储”:“^0.4.0”,“firebase-admin”:“^4.1.2”,“firebase-functions”:“^0.5”,“lodash”:“^4.17.4”,“请求-promise": "^2.0.0", "sharp": "^0.18.4" }, "private": true }
    • 更新了 firebase-admin,一切正常。
    猜你喜欢
    • 2013-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 1970-01-01
    相关资源
    最近更新 更多