我想要一个看起来像这样的JSON文件:
fs.readFile("./db.json", "utf8", (err, data) => {
if (err) {
throw err;
} else {
let json = JSON.parse(data);
if (!json) {
json[identificator] = {};
}
if (!json[identificator].array) {
json = json[identificator] = {
array: []
};
}
let array = json[identificator].array;
if (array.includes(value)) return;
array.push(value);
fs.writeFile("./db.json", JSON.stringify(json, null, 4), err => {
if (err) throw err;
});
}
});
如果需要将新值添加到现有ID的一个数组中,或者需要添加具有其数组和第一个值的新ID,我想做的就是写入或附加到该文件。因此它将作为数据库工作。我想为此使用JSON,以便能够轻松地手动修改该文件的内容,而且它的大小永远不会超过1或2 MB。这是一些实际有效的代码,但前提是在JSON文件中已经定义了给定的ID及其数组:
bundle exec rdebug-ide --host 0.0.0.0 --port 1234 --dispatcher-port 26162 -- bin/rails s -b 0.0.0.0
答案 0 :(得分:1)
您的条件错误。您需要测试json[identificator]
是否存在,而不是json
是否存在。
此外,json = json[identificator] = ...
是错误的,因为它仅用一个条目替换了json
。
fs.readFile("./db.json", "utf8", (err, data) => {
if (err) {
throw err;
} else {
let json = data ? JSON.parse(data) : {};
if (!json[identificator]) {
json[identificator] = {
array: []
};
}
let array = json[identificator].array;
if (array.includes(value)) return;
array.push(value);
fs.writeFile("./db.json", JSON.stringify(json, null, 4), err => {
if (err) throw err;
});
}
});