Шаг 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. Чтение и обработка данных CSV для поиска пользователей в базе данных с помощью электронной почты, упомянутой в CSV в столбце 2.
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);
}
});
});