javascript - NodeJS:在多个文件上使用 fs.readFile() 搜索特定字符串
问题描述
我有一个对象数组,每个对象都是一个具有属性名称、路径、扩展名等的文件,如下所示:
module.exports = {
logpath: "C:\\",
logsfiles: [
{
name: "log1", // file name
path: this.logpath, // path to log
extension: ".log", // log extension
type: "server", // component type (server, connector-hub, connector-component, gateway)
licensed: true, // boolean for license holder
iis: false, // boolean for iis exposure
application: "N/A" // solution
},
{
name: "log2", // file name
path: this.logpath, // path to log
extension: ".log", // log extension
type: "server", // component type (server, connector-hub, connector-component, gateway)
licensed: true, // boolean for license holder
iis: false, // boolean for iis exposure
application: "N/A" // solution
}
]
}
我需要通过读取整个文件来遍历这个列表,搜索一个特定的字符串,如果这个字符串存在,将一些文件属性存储到一个数组中。
我到目前为止是这样的:
function getFile(log) {
return new Promise((resolve, reject) => {
fs.readFile(
logConfig.logpath + log.name + log.extension,
"utf8",
(err, data) => {
if (err) {
console.log(`Error reading file ${log.name}`);
reject(err);
} else {
if (data.indexOf("String pattern to search") != -1)
resolve({ name: log.name, componentkey: "TODO" });
}
}
);
});
}
如果我称它为独立的,我知道这段代码是有效的。但是,如果我尝试在这样的循环中调用它:
async function getAllFiles(logs) {
const finalArray = [];
const promises = logs.map(async log => await getFile(log));
const results = await Promise.all(promises);
finalArray.push(results);
console.log(finalArray); //not printing
console.log("Done"); //not printing
}
什么都没有发生...最后两个打印没有显示在控制台上...
谁能帮助我告诉我我做错了什么?
菜鸟在这里承诺,对不起... :) 提前非常感谢!
解决方案
啊! 知道了!
愚蠢的!
退货承诺并未解决所有项目,getFile(log)
因为我没有else
对if (data.indexOf("String pattern to search") != -1)
.
涵盖了这一点,现在我得到了结果!
谢谢!
推荐阅读
- android - Android:当 addOnItemTouchListener 设置为它时,无法突出显示 recyclerview 中的按下项目
- arduino - 使用 Raspberry pi/arduino/esp32 实现家庭自动化的 Google API
- verilog - Verilog:在向量中分配一根线高,其余为低?
- c++ - 可变参数模板:分组展开参数
- bash - 捆绑:找不到命令 - 在 bash 脚本中,Ubuntu 16.04
- kubernetes - Hazelcast kubernetes 使用 API 和 envoy 代理作为 sidecar 发现
- angular - 如果其他事件先运行,则角度阻止事件
- mysql - 使用嵌套查询和内部联接清理 SQL 查询 [改写]
- python - 无法解开旧数据
- c# - 我可以告诉 C# 可空引用方法实际上是对字段的空检查吗