Облачные функции Firebase не загружают файлы - PullRequest
0 голосов
/ 11 октября 2018

Я использую Firebase Cloud Functions для создания и загрузки .csv отчета.Файл не загружается в корзину gsc.Сначала я преобразовываю .json в .csv и загружаю файл, а затем меняю статус на загруженный, но загрузка не работает.

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

const fs = require('fs-extra');
const gcs = require('@google-cloud/storage');

const path = require('path');
const os = require('os');

const json2csv = require('json2csv');



exports.createCSV = functions.firestore
  .document('reports/{reportId}')
  .onCreate(event => {

    // Step 1. Set main variables

    const reportId = event.params.reportId;
    const fileName = `reports/${reportId}.csv`;
    const tempFilePath = path.join(os.tmpdir(), fileName);

    // Reference report in Firestore
    const db = admin.firestore();
    const reportRef = db.collection('reports').doc(reportId);

    // Reference Storage Bucket
    const storage = gcs.bucket('my-bucket-url'); // or set to env variable


    // Step 2. Query collection
    return db.collection('subscription_list')
      .get()
      .then(querySnapshot => {

        /// Step 3. Creates CSV file from with orders collection
        const orders = [];

        // create array of order data
        querySnapshot.forEach(doc => {
          orders.push( doc.data() )
        });


        return json2csv.parse({ data: orders });
      })
      .then(csv => {
        // Step 4. Write the file to cloud function tmp storage
        return fs.outputFile(tempFilePath, csv);
      })
      .then(() => {
        // Step 5. Upload the file to Firebase cloud storage
        return storage.upload(tempFilePath, { destination: fileName })
      })
      .then(file => {
        // Step 6. Update status to complete in Firestore

        return reportRef.update({ status: 'complete' })
      })
      .catch(err => console.log(err) )

  });

ПРИМЕЧАНИЕ. Правила безопасности сначала должны пройти проверку подлинности.

Ошибка, которую я получаю:

FirebaseStorageError {code_: «хранилище / объект не найден», сообщение_: «Отчеты Firebase: объект» сообщает / ByVUWzqI8igdUUWu2L82.csv 'делаетне существует. ", serverResponse_:" {↵ "error": {↵ "code": 404, ↵ "message": "Not Found.Не удалось получить объект "↵} ↵}", name_: "FirebaseError"}

...