Экспорт коллекции Firestore в облачное хранилище для Firebase с помощью облачных функций — работает только иногда

# #javascript #firebase #google-cloud-firestore #google-cloud-functions #firebase-storage

Вопрос:

Я надеюсь, что кто-нибудь сможет помочь мне с ответом относительно этого кода. Это работает, но:

  • Он загружает CSV-файл в облачное хранилище, но только иногда в виде синей открываемой гиперссылки.
  • Если это не синий файл с гиперссылкой, это просто неопределенный файл, который можно открыть только вручную с помощью кнопки и открывается как неопределенный, на который ссылаются гиперссылки firebase.com.
  • Кроме того, если я разделю это решение для двух разных коллекций firestore (отдельные отчеты), оно полностью перестанет быть гиперссылкой на данные.
 const functions = require("firebase-functions");
const admin = require("firebase-admin");

admin.initializeApp(functions.config().firebase);

// eslint-disable-next-line max-len
exports.removeUser = functions.region("europe-west3").firestore.document("/Users/{Users_id}").onDelete(async (event, context) => {
  const uid = event.id;

  return admin.auth().deleteUser(uid).then(() => {
    console.log("user deleted");
  }).catch((err) => {
    console.log("deletion failed: "   err);
  });
});

// eslint-disable-next-line max-len
exports.createLoanCSV = functions.region("europe-west3").firestore.document("/Reports/{Reports_id}").onCreate(async (event) => {
  const fs = require("fs-extra");
  const {Storage} = require("@google-cloud/storage");
  const path = require("path");
  const os = require("os");
  const {Parser} = require("json2csv");
  // eslint-disable-next-line max-len
  const fields = ["fileNumber", "idNumber", "cash", "refund", "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"];
  const opts = {fields};
  const reportId = event.id;
  const fileName = "reports/"   reportId   ".csv";
  const tempFilePath = path.join(os.tmpdir(), fileName);
  /* Reference Firestore Report*/
  const db = admin.firestore();
  const reportRef = db.collection("Reports").doc(reportId);
  /* Reference Storage Bucket*/
  const storage = new Storage();
  const bucket = storage.bucket("shosholoza-finance-ec7fe.appspot.com");
  const parser = new Parser(opts);

  return await db.collection("Loans").get().then((querySnapshot) => {
    const jsonData = [];
    querySnapshot.forEach(async (doc)=>{
      await jsonData.push(doc.data());
    });
    return parser.parse(jsonData);
  }).then((csv) =>{
    return fs.outputFile(tempFilePath, csv);
  }).then(()=>{
    return bucket.upload(tempFilePath, {destination: fileName});
  }).then((file)=>{
    console.log(file);
    return reportRef.update({status: "complete"});
  }).catch((err) => console.log(err));
});

 

Экспортируйте, где я могу его открыть
Экспорт quot;не удалсяquot; или не привязал данные объекта