NodeJS需要使用自定义结构连接JSON

时间:2016-11-25 14:42:52

标签: json node.js

您好我正在尝试使用特定目录中的所有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函数之前退出。求救!

1 个答案:

答案 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));

希望这有帮助。