【问题标题】:how to delete image in firebase storage using cloud function? [duplicate]如何使用云功能删除 Firebase 存储中的图像? [复制]
【发布时间】:2020-03-12 22:44:32
【问题描述】:

所以我有一个使用nodeJS编写的firestore触发函数,当删除firestore中的文档时,我也想删除存储在Firebase存储中的图像,存储中的文件名称与删除的文档ID相同.这是我的功能:

const functions = require('firebase-functions')

// initialize firestore database
const admin = require("../utilities/firebase_admin_init")
const db = admin.firestore()
const storage = admin.storage()

// firestore reference
const eventRef = db.collection('events')

exports.firestoreDeleteEventCleanUp = functions.firestore.document('events/{eventId}').onDelete((snapshot,context) => {

    const eventID = context.params.eventId

    // how to delete the image in firebase storage in here ????

})

和管理员初始化

const admin = require("firebase-admin")
const functions = require('firebase-functions')
admin.initializeApp(functions.config().firebase)

module.exports = admin

在 Android 中,我可以这样做来删除存储中的图像

// Create a storage reference from our app
val storageRef = storage.reference

// Create a reference to the file to delete
val desertRef = storageRef.child("images/desert.jpg")

// Delete the file
desertRef.delete().addOnSuccessListener {
    // File deleted successfully
}.addOnFailureListener {
    // Uh-oh, an error occurred!
}

但现在我使用的是管理 SDK,我不知道如何使用管理 SDK 删除该文件。我试图在这里阅读文档 https://firebase.google.com/docs/storage/admin/start 。但我不知道如何删除 Firebase 存储中的图像,如下图所示

如果使用 firestore 触发器,storageRef.child("images/desert.jpg") 的等价物是什么?

【问题讨论】:

标签: node.js firebase google-cloud-functions google-cloud-storage firebase-storage


【解决方案1】:

正如您参考的文档 item 中所述,“Firebase Admin SDK 依赖于 Google Cloud Storage 客户端库来提供 Cloud Storage 访问权限。”你应该使用Node.js Client Google Cloud Storage

特别需要使用Storagebucket()方法和Filedelete()方法,如下:

const functions = require('firebase-functions')
const admin = require('firebase-admin');

admin.initializeApp();

const db = admin.firestore()  // <- actually this is not needed for the CF below
const storage = admin.storage()

exports.firestoreDeleteEventCleanUp = functions.firestore.document('events/{eventId}').onDelete((snapshot,context) => {

    const eventID = context.params.eventId

    const defaultBucket = storage.bucket(); 
    const file = defaultBucket.file("eventThumbnail/" + eventID);

    return file.delete();

});

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 2021-10-28
    • 2019-04-16
    • 2018-06-17
    • 2021-01-23
    • 2020-10-10
    相关资源
    最近更新 更多