ユーザーがデータをcsv形式でエクスポートできるシステムを作ろうとしています。csv形式のデータであれば問題ありません。csv エクスポート データのリクエストの処理に問題があります。ユーザーがすべてのデータのエクスポートを要求し、それが巨大であるとします。リクエストが完了するまで待つようにユーザーに依頼するのは最善の方法ではないと思いますか?データのエクスポートが進行中であり、完了したら通知することをユーザーに通知する必要がありますか? はいの場合、バックグラウンドプロセスを使用する必要がありますか?
1058 次
2 に答える
0
最終的に、nodejs を使用して csv 形式でユーザーにデータをストリーミングしました。
function csvExport(req, res){
mysqlPool.getConnection(function(err, connection){
if(err){
throw err;
}
res.header('Content-disposition', 'attachment; filename=connects.csv');
res.header('Content-Type', 'text/csv');
var csv_header_row = "Email,First Name,Last Name,Status,Created\n";
res.write(csv_header_row);
var query = connection.query('SELECT * FROM contacts where user_id = ? AND deleted = 0', [req.params.user_id]);
query
.on('error', function(err) {
//handle error
})
.on('fields', function(fields) {
})
.on('result', function(row) {
var csv_row = row.email+','+row.first_name+','+row.last_name+','+row.status+','+row.created+"\n";
res.write(csv_row);
})
.on('end', function() {
res.end('', function(){
console.log('done');
});
});
});
}
于 2013-07-16T11:04:33.180 に答える
0
可能であれば、デフォルトで 10Mb になる可能性のある、ある種の構成可能な「設定」を定義します。エクスポートが 10Mb を超えることがわかっている場合は、そのような大きな行セットをエクスポートするかどうかをユーザーに尋ねます。可能であれば、サイズを見積もり、それがどのくらいの大きさになるかを知らせてください。バックグラウンド エクスポートの実行中にプログレス バーを表示する場合は、通信を処理してユーザー コマンド フォームに戻す何らかのプロセスが必要になります。その設定を、警告レベルとして必要な数値に近い数値に変更するオプションをフォームに用意します。
于 2013-06-16T18:54:26.013 に答える