步骤 1. 接收 CSV 作为 API 参数,如下所示
payload: {
maxBytes: 20715200,
output: 'stream',
parse: true,
allow: 'multipart/form-data'
},
步骤 2. 验证导入的 CSV 文件,如下所示:
validate: {
importedCsv: Joi.any()
.meta({swaggerType: 'file'})
.required()
.allow('')
.description('CSV file')
},
步骤 3. 上传 CSV 文件并将其保存在“root/XXX”目录中的服务器上。
csvFileName = ""+moment().utc().format('XXXX-XX-XX')+".csv";
csvFilePath = Path.resolve(".") + "/XXX/" + csvFileName ;
var file = fs.createWriteStream(csvFilePath);
file.on('error', function (err) {
console.log(err.message);
});
payload.importedCsv.pipe(file);
payload.importedCsv.on('end', function (err) {
if(err){
cb(ERROR);
}else{
cb(null);
}
});
步骤 4. 借助第 2 列 CSV 中提到的电子邮件,读取和处理 CSV 数据以在数据库中搜索用户。
var obj = csv();
obj.from.path(csvFilePath).to.array(function (data) {
async.forEach(data, function (item, callback){
/** Data processing and query part **/
console.log(item[1]); /* will print email from the second cloumn in the CSV */
}, function(err) {
cb(null);
});
});
步骤 5. 将导入的 CSV 文件保存在 AWS s3 服务器上。
fs.readFile(csvFilePath, function (error, fileBuffer) {
var accessKeyId = XXXXXX;
var secretAccessKeyId = XXXXXX;
AWS.config.update({accessKeyId: accessKeyId, secretAccessKey: secretAccessKeyId});
var s3bucket = new AWS.S3();
var params = {
Bucket: XXXXXXX,
Key: 'XXX' + '/' + csvFileName,
Body: fileBuffer,
ACL: 'public-read',
ContentType: payload.importedCsv.hapi.headers['content-type']
};
s3bucket.putObject(params, function (err, data) {
if (err) {
// cb(ERROR);
}else{
// cb(null);
}
});
});