Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当您读取文件(fs)的每一行并获得结果时,如何匹配多个字符串关键字?_Javascript_Arrays_Node.js_Search_Fs - Fatal编程技术网

Javascript 当您读取文件(fs)的每一行并获得结果时,如何匹配多个字符串关键字?

Javascript 当您读取文件(fs)的每一行并获得结果时,如何匹配多个字符串关键字?,javascript,arrays,node.js,search,fs,Javascript,Arrays,Node.js,Search,Fs,基本上,我有来自客户端的多个搜索字符串,我必须在文件的每一行中找到这些字符串,如果该行与用户输入的所有字符串匹配,则将该行推送到结果,下面的代码将发送空的结果数组 如何循环搜索每个搜索字符串并找到匹配项,循环完成后,将所有匹配行推送到结果中 searchLogs.js /* Example client input var searchStr = [{"text":"457383",{"text":"requestPdr"}] */ async.eachSeries(fil

基本上,我有来自客户端的多个搜索字符串,我必须在文件的每一行中找到这些字符串,如果该行与用户输入的所有字符串匹配,则将该行推送到结果,下面的代码将发送空的
结果数组

如何循环搜索每个搜索字符串并找到匹配项,循环完成后,将所有匹配行推送到
结果中

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 = [];
    });
/*示例客户端输入
var searchStr=[{“text”:“457383”,{“text”:“requestPdr”}]
*/
async.eachSeries(filesData.logFiles,函数(logfile,done){
//读取文件
readStream=fs.createReadStream('./logs/'+filesData.searchEnv+'/'+logfile.filename,'utf8')
readStream.pipe(split())
.on('数据',函数(行){
对于(var i=0;i
尝试更改

searchStr[i].toLowerCase()


searchStr[i]['text'].toLowerCase()

我想有两种情况。一种是代码抛出错误,但将
err
保留为空,另一种是if语句永远不为真。我认为后者更可能是真的,但你能检查并发布你的结果吗?
searchStr
看起来像你提供的示例吗?如果是这样,它怎么有
toLowerCase
方法?searchStr[i]是一个对象,不是吗?