我是谷歌平台的新手,我不具备使用外部库创建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'了解这个外部库的工作原理。我在本地获得了结果但在云中没有。
答案 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无法为您提供要写入的文件系统,因此您需要找到另一种方法来执行此操作。