Javascript 如果ID没有';还没有定义

Javascript 如果ID没有';还没有定义,javascript,Javascript,我想要一个JSON文件,看起来像这样: { "3091015": { "array": [ "value 1", "value 2", ... ] }, "9096539": { "array": [ "value 1", "value 2", ... ] }

我想要一个JSON文件,看起来像这样:

{
    "3091015": {
        "array": [
            "value 1",
            "value 2",
            ...
        ]
    },
    "9096539": {
        "array": [
            "value 1",
            "value 2",
            ...
        ]
    },
    ...
}
如果需要将新值添加到现有ID的数组中,或者需要添加一个新ID及其数组和第一个值,我要做的是写入或追加到此文件。因此,它将作为一个数据库工作。我想使用JSON,以便能够轻松地手动修改该文件的内容,而且它永远不会超过1或2MB。以下是一些实际工作的代码,但仅当给定ID及其数组已在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;
    });
  }
});

你的条件句是错误的。您需要测试
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;
    });
  }
});