【问题标题】:Node.js - File System - using a variable in fs.writeFile()Node.js - 文件系统 - 在 fs.writeFile() 中使用变量
【发布时间】:2018-06-23 10:28:20
【问题描述】:

我不擅长用文字解释,所以我会尽可能清楚地展示和解释正在发生的事情以及我想要拥有的东西。


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"(参见下面的示例,我添加了一个带有


我希望 .json 文件的内容:

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

我怎样才能做到这一点?我似乎根本无法弄清楚...

【问题讨论】:

    标签: javascript json node.js fs


    【解决方案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 变量的内容并将其用作属性名称。

    【讨论】:

    • 这实在是太尴尬了,我相信我已经尝试过了,但显然我没有或者做错了,我已经卡了一段时间了,非常感谢!!
    【解决方案2】:

    像这样创建数据:

    if(!file.created) {
        file.created            = {};
        file.created.timestamp  = "123456789";
    
        let member_id = "456";
    
        file[member_id]      = {};
        file[member_id].text = "hello!";
    }
    

    【讨论】:

    • 这实在是太尴尬了,我相信我已经尝试过了,但显然我没有或者做错了,我已经卡了一段时间了,非常感谢!!
    猜你喜欢
    • 2015-09-02
    • 2021-04-16
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 2022-01-16
    • 2019-02-11
    • 2022-01-14
    • 2017-03-28
    相关资源
    最近更新 更多