NodeJS使用用户上传的所有JSON创建JSON

时间:2016-11-25 16:03:42

标签: json node.js

我正在尝试使用目录中的所有JSON文件制作JSON文件。每次用户上传新的JSON时,都应生成新的组合JSON。我希望新的JSON具有自定义结构,因此无法使用任何库。我有以下代码:

    router.post('/upload', function(req, res) {

var sampleFile;
var bbbid = req.body.bbbid;
DDLFile = req.files.DDLFile;


j++;

DDLFile.mv('/uploads/' + bbbid + '/device' + j + '.json', function (err) {
    if (err) {
        res.status(500).send(err);
    }
    else {
        res.redirect("fileuploaded");
    }

});


var myfiles = [];
var fs = require('fs');

var arrayOfFiles = fs.readdirSync('/uploads/' + bbbid);

arrayOfFiles.forEach(function (file) {
    myfiles.push(file);
    console.log(myfiles);
});
console.log('No of Files:', myfiles.length);
var files = myfiles.length;
console.log('Files:', files);
console.log('J', j);

var cddl = "{ BBBID:" + bbbid;
if (files == 0) {

    cddl = cddl + '}';
    console.log('Entered if loop');

}
else {
    var i = 0;
    /*var obj;
    fs.readFile('/uploads/' + bbbid + '/device' + j + '.json', 'utf8', function (err, data) {
        if (err) throw err;
        obj = JSON.parse(data);
    });*/

    for (i = 0; i < files; i++) {
        console.log('Entered For loop');
        console.log('Count:', count);
        console.log('Sensor:', sensor);
        try{
        var obj = fs.readFileSync('/uploads/' + bbbid + '/device' + count + '.json', 'utf8');}
        catch(err){
            console.log(err);
        }
        console.log('everything good');
        var obj1 = JSON.parse(obj);
        console.log('hi');
        //JSON.stringify(obj);
        var ddl = require('/uploads/' + bbbid + '/device' + count + '.json');
        console.log('o');
        cddl = cddl + ", {" + obj1.DDL.Sensor.Description.Verbose_Description + ":" + JSON.stringify(ddl) + "}"
        JSON.stringify(cddl);
        console.log(cddl);
        count++;
        sensor++;
        console.log('Count:', count);
        console.log('Sensor:', sensor);
    }
    cddl = cddl + '}';
    JSON.stringify(cddl);
    console.log(cddl);
}

});

我想在每次上传新文件时生成新的cddl。有很多问题。求救!

1 个答案:

答案 0 :(得分:0)

我看到两个问题。首先是代替:

 var obj = fs.readFileSync('/uploads/' + bbbid + '/device' + count + '.json', 'utf8');}
 catch(err){
     console.log(err);
 }
 console.log('everything good');
 var obj1 = JSON.parse(obj);

你可以写(修复路径,如有必要):

var obj1 = require('./uploads/' + bbbid + '/device' + count + '.json')

然后,当你打电话:

JSON.stringify(cddl);

您没有将结果保存在任何地方。所以你应该把它保存在那里,你需要:

var a = JSON.stringify(cddl);

完成设置后,请不要忘记使用I set variables in a loop that's in a pipeline. Why do they disappear after the loop terminates? Or, why can't I pipe data to read?或异步fs.writeFileSync写回文件。