【发布时间】:2020-07-19 07:31:04
【问题描述】:
我正在创建我的第一个 Node.js REST API 测试项目,用于检索奖品。该逻辑旨在执行以下操作:
- 从与项目关联的 Google Cloud Storage 存储分区中检索 CSV
- 解析 CSV
- 查找未填充“已声明”列的第一行
- 将“已声明”列更新为“已声明!”
- 在 Google Cloud Storage 中覆盖 CSV 文件中的数据
- 返回与该行关联的奖品名称
我的逻辑目前在本地工作,但我想知道是否有更好、更具可扩展性的代码编写方式。我将以每天约 10 万用户的 500/分钟速率限制对其进行测试,最终将传递一个外部用户 ID 以存储在“已声明”列中。 CSV 中总共有 500k 行(奖品)。
我正在使用的代码如下。任何使其可扩展的建议将不胜感激!提前谢谢你。
const csv = require('csv-parser');
const fs = require('fs');
const jsonexport = require('jsonexport');
const bucketName = 'MY-BUCKET';
const filename = 'MY-CSV';
const {Storage} = require('@google-cloud/storage');
const storage = new Storage({keyFilename: "MY-KEY.json"});
const myBucket = storage.bucket(bucketName);
const file = myBucket.file(filename);
let dataArray = [];
file.createReadStream()
.pipe(csv())
.on('data', function (data) {
dataArray.push(data);
})
.on('end', function(){
let prize = dataArray.find(element => element.Claimed == "");
prizeName = prize.Prize_name;
prize.Claimed = "claimed!";
jsonexport(dataArray,function(err, transformedData){
if(err) return console.log(err);
file.save(transformedData, function(err) {
if(err) return console.log(err);
});
});
return prizeName
});
【问题讨论】:
-
顺便说一句,欢迎来到 StackOverflow!您对新用户的提问格式很好,似乎已经阅读 (stackoverflow.com/help/how-to-ask) 并了解降价编辑器。也不要忘记给为您提供有用数据的用户投票并将问题标记为已回答或与社区分享您自己的答案。万一你自己发现了。
-
让我猜一猜,您使用与
*.csv打交道只是因为在您的项目中使用 Google 表单作为前端界面? -
您好@AlexZeDim,感谢您的回复和客气话!我会确保投票并标记已回答的问题,谢谢您的建议。 -- 我使用
*,csv是因为我想让数据在谷歌云存储和谷歌表格之间来回移动变得容易。例如,很容易从表格中以 CSV 格式下载数据。你能推荐另一种格式吗? -
是的,我只是输入
if I were you的答案
标签: node.js rest csv google-cloud-storage