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

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

我正在运行 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/

相关文章:

javascript - 将 JavaScript 转换为 Python 代码时出现十六进制问题

javascript - XMLHttpRequest 无法加载 XXX No 'Access-Control-Allow-Origin' header

javascript - 如果一个对象的键包含一个词

Android - Firebase 字符串返回 'null'

ios - 更新 Firebase 上所有子项的值

javascript - Rails 设计 + omniauth-stripe-connect "Authorization code does not belong to you"

node.js - Firebase 管理员和自定义 token 数据传递到服务器

用于 Flutter 桌面嵌入的 Firebase 身份验证插件

java - Android - 事务 - 任务尚未完成

javascript - 动态更新 ref Vuejs 和 Vuefire