需要帮助将新数组添加到JSON对象中

时间:2014-11-28 08:22:57

标签: javascript json node.js

我正在制作一个使用nodejs管理网页的文件,需要一些帮助。

我在向DB收到的JSON对象中添加了一些信息。 DB保存阶段信息,我应该链接有关阶段文件的信息。

这是该功能的代码。在代码中添加了注释。

DBmodel.findOne({'key': 'server'}).exec(function (err, data) {
    for (var i = 0; i < data.stage.length; i++) {
        // this was successful. I added an array to check each files.
        data.stage[i].packFileNameArray = data.stage[i].packFileName.split("/");
        data.stage[i].packVersionArray = data.stage[i].packVersion.split("/");

        // this is a problem. I will add file information for each file.
        // I 
        for (var j = 0; j < data.stage[i].packFileNameArray.length; j++) {
            fs.stat(dirPath + data.stage[i].packFileNameArray[j], function (err, fileStat) {
                if (err) {
                    // this was first try. I thought the array will be automaticallt created.
                    data.stage[i].isExist[j] = 'NO';
                    data.stage[i].mTime[j] = '0';
                    data.stage[i].size[j] = '0';
                } else {
                    // this was second try. I tried push into each time.
                    data.stage[i].isExist.push('YES');
                    data.stage[i].mTime.push(fileStat.mTime);
                    data.stage[i].size.push(fileStat.size);
                }
                console.log(data.stage[i].isExist[j]);
                console.log(data.stage[i].mTime[j]);
                console.log(data.stage[i].size[j]);
            });
        }

    }

    });

我想知道如何将其他信息作为数组添加到JSON对象中。

谢谢。

2 个答案:

答案 0 :(得分:0)

data.stage[i].push({ isExist: 'Yes'});

答案 1 :(得分:0)

在将数据推入数组之前,您必须创建数组(因为似乎不存在):

DBmodel.findOne({'key': 'server'}).exec(function (err, data) {
  for (var i = 0; i < data.stage.length; i++) {
    // this was successful. I added an array to check each files.
    data.stage[i].packFileNameArray = data.stage[i].packFileName.split("/");
    data.stage[i].packVersionArray = data.stage[i].packVersion.split("/");

    data.stage[i].isExist = [];
    data.stage[i].mTime = [];
    data.stage[i].size = [];
    //...