使用spark(免费)firebase计划,使用Cloud Functions for Firebase导出excel

时间:2017-10-09 11:47:03

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

我在Node.js中使用Cloud Functions for Firebase,我使用excel4node lib从对象导出excel文档,现在的问题是wb.write('Excel.xlsx');之后我必须在发送之前将excel文件保存到某个地方在用户可以下载它的前端。

我试图做的事情:

  1. 我知道有适用于Firebase的云存储,但出于某些奇怪的原因,只有谷歌知道并且根据这篇文章:TypeError: firebase.storage is not a function Firebase存储不再与Node.js一起使用。

  2. 我还了解了Google云存储,但这只是通过付费服务。

  3. 此处有一个教程:https://mashe.hawksey.info/2017/06/cloud-functions-for-firebase-in-google-apps-script/但您需要再次制定付费方案。

  4. 我的问题是:有没有任何免费方法可以使用firebase和Nodejs进行导出,这样我就可以将导出的excel保存到某个地方并将其输出到前端,以便从用户下载? / p>

1 个答案:

答案 0 :(得分:2)

您在3号教程中发布的链接只需要付费计划,因为它会发出外部HTTP请求。如果您只是使用内部存储空间,则可以执行以下操作:

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

var bucket = admin.storage().bucket();

//cloud functions can only write to the temporary directory
const tempFilePath = path.join(os.tmpdir(), "Excel.xlsx");

//creates and writes the file to the local temporary directory 
//and then retrieves the newly created file for uploading
wb.write(tempFilePath, function (err, stats) {
          if (err) {
              console.error(err);
          }  else {
              console.log("File written.");
              fs.readFile(tempFilePath, function (err, data) {
                if (err) {
                  throw err;
                }
                var uploadTask = bucket.upload(tempFilePath, 
               { destination: "excelFileFolder/Excel.xlsx"});
// Uploads the excel file to a folder called excelFileFolder in your firebase storage