加入CSV文件并使用Google功能删除重复项

时间:2018-02-09 11:35:44

标签: node.js csv google-cloud-platform google-cloud-storage

我是谷歌平台的新手,我不具备使用外部库创建Google功能的知识。

我想将CSV文件上传到云端存储,然后触发Google云端功能,将其与Google云端存储中的其他CSV文件一起加入,并将JOIN结果导出到新的csv文件并删除重复项。

我已经看过图书馆&csv-join'和&#c;重新排序'对于npm,但我不确定如何将它与云功能一起使用,如果可能的话,因为我已经陷入困境。

感谢您的建议。

问候。

这是我的代码:

exports.Test_BQ = (event, callback) => {
  const file = event.data;

  if (file.resourceState === 'not_exists') {
    console.log(`File ${file.name} deleted.`);
  } else if (file.metageneration === '1') {


const reorder = require('csv-reorder');

reorder({
  input: 'https://storage.googleapis.com/staging.XXXXX.appspot.com/test.csv',
  output: 'https://storage.googleapis.com/staging.XXXXX.appspot.com/test_2.csv',
  sort: 'policyID',
  type: 'string',
  descending: false,
  remove: true,
  metadata: false
});

  }

  callback();
    };

我收到此错误:

  

TypeError:promisify不是Object的函数。 (/user_code/node_modules/csv-reorder/lib/read.js:6:18)在Module._compile(module.js:570:32)处于Object.Module._extensions..js(module.js:579:10) )在Module.load(module.js:487:32)的try.moduleLoad(module.js:446:12)处于Module.require的Function.Module._load(module.js:438:3)处(module.js:497) :17)at对象的require(internal / module.js:20:19)。 (/ user_code/node_modules/csv-reorder/index.js:4:14)在Module._compile(module.js:570:32)

现在我只测试&#csv-reorder'了解这个外部库的工作原理。我在本地获得了结果但在云中没有。

1 个答案:

答案 0 :(得分:0)

csv-reorder库使用util.promisify,它是Node 8.X版本的一部分,而Google Cloud Functions目前运行Node.js v6.11.5。您可以通过以下方式为此旧版本提供填充:

npm install --save util.promisify 

然后您可以像这样修补util库:

const util = require('util');
require('util.promisify').shim();

这可以解决您所面临的错误。但是,在仔细查看csv-reorder code之后,它似乎只能从文件系统中读取文件。 Google Cloud Functions无法为您提供要写入的文件系统,因此您需要找到另一种方法来执行此操作。