1

Ich verwende Firebase und in der Echtzeitdatenbank speichere ich einen Dateinamen der aktuellen Datei, die ich laden möchte. Ich verwende dann die Cloud-Funktion, um Miniaturansichten zu erstellen. Wenn ich die Datei ändere, versuche ich eine Cloud-Funktion zu erstellen, um die Thumbnails zu löschen. Dies ist, was ich gerade habe und ich kann den vollständigen Pfad laden. object ist nicht verfügbar für Ich kann den Bucket nicht laden.Wie lösche ich eine Datei, deren Pfad in Real Time DB ist?

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; 
}); 

Antwort

3

Wenn Ihre vollständigen Pfad ist, wo Sie die Datei in Feuerbasis Speicher gespeichert haben, dann sollten Sie den folgenden Code helfen:

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); 
     }); 
}); 

alle Vorgänge zu verstehen, auf die Datei dieser durchlaufen: Google cloud storage Uploading, Downloading, and Deleting Objects und Besuch Firebase storage for admin sdk zu verstehen, wie Admin SDK mit Speicher funktioniert folgen Sie diesem:

+0

Danke für die Tipps. Getting und Fehler mit diesem Code. 'TypeError: admin.storage ist keine Funktion' – Xerri

+0

Können Sie die package.json Datei senden? Denn in meinem Code habe ich gerade var admin = require ("firebase-admin"); var bucket = admin.storage(). bucket(); und die exports.deleteThumbnails ...... Es funktioniert gut. – mark922

+0

oh ok ... wahrscheinlich Ich betreiben und altes Paket: { \t "name": "Funktionen", \t "description": "Cloud-Funktionen für Firebase", \t "Abhängigkeiten": { \t \t "@ google-cloud/storage": "^ 0.4.0" \t \t "Feuerbasis-admin": "^ 4.1.2" \t \t "Feuerbasis-Funktionen": "^ 0,5" \t \t "lodash": "^ 4.17.4", \t \t "Anfrage-Versprechen": "^ 2.0.0", \t \t "scharf": "^ 0.18.4" \t}, \t "private": true} – Xerri