我用语言解释很可怕,所以我会尽可能清楚地展示和解释我发生的事情以及我想要的事情。
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!"
}
}
我怎样才能做到这一点?我似乎无法弄明白......
答案 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!";
}