Node.js - 文件系统 - 使用fs.writeFile()中的变量

时间:2018-01-14 17:05:25

标签: javascript json node.js fs

我用语言解释很可怕,所以我会尽可能清楚地展示和解释我发生的事情以及我想要的事情。

node.js中的当前代码: - 这会打开并覆盖.json文件,这样可以正常工作,到目前为止还不错。

fs.open(fileName, "r", function(err, fd) {
if(!err) {
    let file = require(fileName);
    if(!file.created) {
        file.created            = {};
        file.created.timestamp  = "123456789";

        let member_id = "456";

        file.member_id      = {};
        file.member_id.text = "hello!";
    }

    fs.writeFile(fileName, JSON.stringify(file, null, "\t"), function (err) {
        if(err) return console.log(err);
        console.log("added to " + fileName);
    });
    return;
}
else 
    return console.log("woops, something went wrong.....");

});

.json文件的内容:

{
    "created": {
        "timestamp": "123456789"
    },
    "member_id": {
        "text": "hello!"
    }
}

因此它正确地打开并覆盖.json文件。太棒了。这个问题是;它添加了一个名为"member_id"的密钥,而我希望它为"456"(请参阅下面的示例,我添加了//注释&lt; ---箭头指出来)< / p>

我希望.json文件的内容如下:

{
    "created": {
        "timestamp": "123456789"
    },
    "456": {    // < ---------------------
        "text": "hello!"
    }
}

我怎样才能做到这一点?我似乎无法弄明白......

2 个答案:

答案 0 :(得分:1)

改变这个:

file.member_id      = {};
file.member_id.text = "hello!";

到此:

 file[member_id]      = {};
 file[member_id].text = "hello!";

以及对同一财产的任何其他引用。

如果要将变量名称用作属性名称,则必须使用括号语法引用它。 file.member_id只是表示您在当前结果中可以看到名为member_id的属性。将它放在括号中,如file[member_id]所示,告诉解释器获取member_id变量的内容并将其用作属性名称。

答案 1 :(得分:0)

创建如下数据:

if(!file.created) {
    file.created            = {};
    file.created.timestamp  = "123456789";

    let member_id = "456";

    file[member_id]      = {};
    file[member_id].text = "hello!";
}