您好我正在尝试使用特定目录中的所有JSON文件创建JSON文件。我想在我向目录添加新文件时更新它。所以,我正在' post'中编写代码。我文件上传页面的一部分。我有以下代码:
for (i = 0; i < files; i++) {
console.log('Entered For loop');
console.log('Count:', count);
console.log('Count:', sensor);
fs.readFile('/uploads/' + bbbid + '/device'+count+ '.json' , 'utf8', function (err, data) {
if (err) throw err; // we'll not consider error handling for now
var obj = JSON.parse(data);
JSON.stringify(obj);
//console.log(myfiles[i]);
var ddl = require('/uploads/' + bbbid + '/device' +sensor+ '.json');
//var ddl = require('/uploads/' + bbbid + '/device' + count + '.json');
cddl = cddl + ", {" + obj.DDL.Sensor.Description.Verbose_Description + ":" + JSON.stringify(ddl) + "}"
JSON.stringify(cddl);
console.log(cddl);
count++;
sensor++;
console.log('Count:', count);
console.log('Sensor:', sensor);
});
}
我在post方法开始之前将count和sensor初始化为1。我得到的输出:
Entered For loop
Count: 2
Count: 2
Entered For loop
Count: 2
Count: 2
我们不能在for循环中使用fs.readFile吗?我认为我的循环在进入readfile函数之前退出。求救!
答案 0 :(得分:2)
For循环是同步和fs.ReadFile异步。你的假设是正确的。
您需要使用
https://nodejs.org/api/fs.html#fs_fs_readfilesync_file_options
以下是示例
var fs = require('fs');
var contents = fs.readFileSync('package.json');
console.log(JSON.parse(contents));
希望这有帮助。