私はクライアント側searchStr
からファイル内の行と一致する必要がある複数の検索キーワードを持っているとします。text
とファイルの各行をどのように一致させ、その行をresults
にプッシュしますか?以下のコードでは、私はresults
の空の応答を得ています。何が間違って実装されているのでしょうか?nodejsを使用してファイル内の複数のキーワードを検索するにはどうすればよいですか?
search.js
function asyncFiles(filesData) {
async.eachSeries(filesData.logFiles, function(logfile, done) {
// read file
readStream = fs.createReadStream('./logs/' + filesData.searchEnv + '/' + logfile.filename, 'utf8')
readStream.pipe(split())
.on('data', function(line) {
var searchStr = [{"text":"4588769"},{"text":"request"}]
searchStr.forEach(function(text) {
if (line.toLowerCase().indexOf(text.toLowerCase()) != -1)
var messageDateInfo = line.split('|')[0].replace(/[\[\]']+/g, '');
messageDateInfo = new Date(messageDateInfo).getTime();
searchStartDate = new Date(searchStartDate).getTime();
searchEndDate = new Date(searchEndDate).getTime();
if (messageDateInfo - searchStartDate > 0 && searchEndDate - messageDateInfo > 0) {
results.push({
filename: logfile.filename,
value: line
});
}
});
});
done();
}, function(err) {
if (err) {
console.log('error', err);
}
readStream.on('end', function() {
callback(results);
});
results = [];
});
}
あなたが持っているコードの問題は何ですか? –
私は空のレスポンを得ていますが、結果に ''はためきます。 – hussain
あなたは 'results'で何をしているのかを示していません。ストリームは非同期であるが、 'results'を同期的に使用しようとしているという問題ではないでしょうか?実際の問題とより完全な例で質問を更新してください。 –