Search code examples
firebasegoogle-cloud-platformfirebase-realtime-databasegoogle-cloud-functionsgoogle-cloud-storage

Access Firebase Storage from Firebase Functions


My ultimate target is to generate a pdf and send it via email through Firebase Cloud Function but I'm still testing things out. I am sending emails using Nodemailer. My next step is to include an image I have store in the same project on Firebase Storage.

How can I access the files I have in Storage to include as an attachment? My trigger for the function is onCreate() for a node in RTDB.

functions.database
    .ref("/jobs/draft/{id}")
    .onCreate((snapshot: any, context: any) => {

Solution

  • To "access the files you have in Storage" you have to use the Admin SDK, as follows:

     //.....
      const admin = require('firebase-admin');
     //.....
    
      functions.database
          .ref("/jobs/draft/{id}")
          .onCreate((snapshot: any, context: any) => {
    
            const fileBucket = 'gs://bucket.appspot.com';
            const filePath = 'path/to/file';
    
            const bucket = admin.storage().bucket(fileBucket);
            const file = bucket.file(filePath);
    
            //.....
    
          });
    

    See also https://googleapis.dev/nodejs/storage/latest/Storage.html