在Node.js中searchstring的文件内容

我正在尝试使用Node.js在本地目录中复制Dropbox javascript SDK filesSearch。 我需要基本上遍历目录,并search每个文件名,它的内容,search条件,如果find匹配,将它们添加到结果数组,可以在最后匹配sorting。

经过无休止地寻找可以做到这一点的节点模块,我决定自己做。 我已经成功地通过目录走了,我可以做一个简单的匹配文件夹名称和文件名,但我看不到如何search文件的内容?! 这些文件主要是PDF文件,但也可能是Word和Excel文件。

这是我到目前为止的“行走”代码:

walk_through_local_repository(store.get("local_repository_path"), search_term); var results = []; function walk_through_local_repository(path, search_term) { fs.readdir(path, (err, dir) => { for(var i = 0; i < dir.length; ++i) { // ignore hidden files/folders if(dir[i].charAt(0) !== "." && dir[i] !== "TEMP") { // determine whether or not the item is a file or a folder if(fs.lstatSync(path+"/"+dir[i]).isDirectory()) { // it's a folder, check the folder name for matches if(dir[i].toLowerCase().indexOf(search_term) !== -1) { var score = 1; } else { var score = 0; } // go again console.log("going to walk_through_local_repository again for "+path+"/"+dir[i]+"."); walk_through_local_repository(path+"/"+dir[i], search_term); } else if(fs.lstatSync(path+"/"+dir[i]).isFile()) { // It's a file, check the filename for matches if(dir[i].toLowerCase().indexOf(search_term) !== -1) { var score = 1; } else { var score = 0; } // check the file CONTENTS here and update the score for this file again } results[i] = {path:path+"/"+dir[i], score:score}; } } }); } 

所以我真的有三个问题

  1. 有一个更好的方法吗? 我错过了某个模块吗?!
  2. 如果不是,我如何search文件的内容? PDF,Word文档和Excel电子表格
  3. 我怎么知道它是通过整个目录,我可以显示结果数组?