Node.js 如何使用nodejs和hapi@8.8.1
我开始使用一个现有的项目,该项目是用Hapi的旧版本构建的(hapi@8.8.1)服务器上的节点版本也较旧。我得到了一个上传CSV文件的任务,其中包括用户的电子邮件地址,我需要借助CSV文件中提供的电子邮件处理用户数据。Node.js 如何使用nodejs和hapi@8.8.1,node.js,mongodb,hapijs,import-csv,Node.js,Mongodb,Hapijs,Import Csv,我开始使用一个现有的项目,该项目是用Hapi的旧版本构建的(hapi@8.8.1)服务器上的节点版本也较旧。我得到了一个上传CSV文件的任务,其中包括用户的电子邮件地址,我需要借助CSV文件中提供的电子邮件处理用户数据。 任务列表如下:- 任务1。将CSV上传并保存到服务器上的目录中 “根目录/上传的\u csv” 任务2。读取并处理CSV数据以在数据库中搜索用户 借助CSV第2列中提到的电子邮件 任务3。在AWS s3服务器上保存导入的CSV文件 因为我正在处理旧的节点和hapi的版本,在
任务列表如下:-
- 任务1。将CSV上传并保存到服务器上的目录中 “根目录/上传的\u csv”
- 任务2。读取并处理CSV数据以在数据库中搜索用户 借助CSV第2列中提到的电子邮件
- 任务3。在AWS s3服务器上保存导入的CSV文件
因为我正在处理旧的节点和hapi的版本,在那个阶段我甚至不能更新所有的版本和依赖项 第1步。接收CSV作为API参数,如下所示
payload: {
maxBytes: 20715200,
output: 'stream',
parse: true,
allow: 'multipart/form-data'
},
第二步。验证导入的CSV文件,如下所示:
validate: {
importedCsv: Joi.any()
.meta({swaggerType: 'file'})
.required()
.allow('')
.description('CSV file')
},
第三步。在“root/XXX”目录下的服务器上上载和保存CSV
第四步。阅读和处理CSV数据,借助第2列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);
});
});
第五步。在AWS s3服务器上保存导入的CSV文件
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);
}
});
});
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);
}
});
});