【发布时间】:2018-08-10 14:10:24
【问题描述】:
我该如何完成它?它需要读取一个目录下的所有json文件,记住内容,然后与nodejs中的一个变量进行比较。
例如共有三个json文件,存储内容并检查是否有任何内容等于“hi”。如果是,则执行某些操作,否则,执行其他操作。
我已经花了几个小时试图在谷歌上搜索类似的东西,但无济于事。
【问题讨论】:
我该如何完成它?它需要读取一个目录下的所有json文件,记住内容,然后与nodejs中的一个变量进行比较。
例如共有三个json文件,存储内容并检查是否有任何内容等于“hi”。如果是,则执行某些操作,否则,执行其他操作。
我已经花了几个小时试图在谷歌上搜索类似的东西,但无济于事。
【问题讨论】:
执行以下操作的示例代码:
对每个匹配项应用一个操作
var fs = require("fs");
var async = require("async");
var folder = __dirname+"/yolo"
var target = "hi";
var myAction = function(file, content)
{
console.log("My action");
console.log(file);
console.log(content);
};
fs.readdir(folder, function(err, item){
if(err)
{
// do stg
console.log("error readdir");
console.log(err);
process.exit(0);
}
else
{
var content = [];
async.eachOf(item, function(e, i, ecb){
fs.readFile(folder+"/"+e, "utf8", function(err, data){
if(err || !data)
{
console.log("error readFile");
console.log(err);
return ecb(err || true);
}
else
{
content.push({
file:e,
text: data.toString()
});
return ecb(null);
}
})
}, function(err){
if(err)
{
// do stg
console.log("error eachOf");
console.log(err);
process.exit(0);
}
else
{
// get only item matching the string
var filters = content.filter(function(e){return e.text == target});
// call actions on each matching item
filters.forEach(function(e){
myAction(e.file, e.text);
});
process.exit(1);
}
});
}
});
【讨论】: