基本的には、私はファイル内の各行で見つけなければならないクライアントからの複数の検索文字列を持っています。ファイル(fs)の各行を読み込んで結果を得るときに複数の文字列キーワードをマッチングする方法は?
どのように各検索文字列をループして一致を見つけることができ、ループが完了すると、一致するすべての行がresults
にプッシュされます。
searchLogs.js
/* Example client input
var searchStr = [{"text":"457383",{"text":"requestPdr"}]
*/
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) {
for (var i = 0; i < searchStr.length; i++) {
if (line.toLowerCase().indexOf(searchStr[i].toLowerCase()) != -1)
results.push({
filename: logfile.filename,
value: line
});
}
});
},
function(err) {
if (err) {
console.log('error', err);
}
readStream.on('end', function() {
callback(results);
});
results = [];
});
へ
searchStr[i].toLowerCase()
を変更してみてください、私は2つのシナリオがありますと仮定します。コードがエラーをスローしますが、 'err'は空のままになり、if文は決して真ではありません。後者は可能性が高いと思いますが、結果を確認して投稿することはできますか? –