当前位置: 代码迷 >> JavaScript >> 如何在OOP类中更新Object json
  详细解决方案

如何在OOP类中更新Object json

热度:81   发布时间:2023-06-13 11:51:36.0

我的JSON文件

 [ { "id": 1, "task": "go dancing", "status": false }, { "id": 2, "task": "Walk", "status": false } ] 

我真是停留在我的OOP,我试图找到的财产Status在我的JSON,我想更新属性布尔TP是true从假

这是我的代码

static completed(input) {
    const data = Model.getdAll(); // get './data.json' local host, 
    for (let i = 0; i < data.length; i++) {
      if(data[i].id == input){
        data[i].status = true
        Model.writeFile(data);
        return data
      }
    }
  }

当我console.log(在该静态方法上时,就像这样

这是我的writefile静态方法

static writeFile(data) {
    return fs.writeFileSync("./data.json", JSON.stringify(data, null, 2) , 'utf8');
  }

//当我在该静态方法上使用console.log(时,就像这样

Model { id: 4, task: 'going to gym', status: true }

当我在for循环中写入文件时,在forloop之后,实际数据未更改,并且该status仍然为false

考虑使用Array#find。 对象将是对数据数组内部对象的引用,因此对其进行更改还将更改数据内部的内容。

 const Model = { getdAll: function(){ return [{"id":1,"task":"go dancing","status":!1},{"id":2,"task":"Walk","status":!1}] }, writeFile: function(data){ console.log(JSON.stringify(data, null, 2)) } } function completed(input){ const data = Model.getdAll(); // get './data.json' local host, const object = data.find(({id})=>id === input); if(!object) throw new Error("Object not found"); object.status = true; Model.writeFile(data); return data; } const res = completed(1); 

您还应该记住, 不返回任何内容,但是如果失败则抛出错误。

考虑一下,将其包装在try / catch中:

static writeFile(data) {
   try {
      fs.writeFileSync("./data.json", JSON.stringify(data, null, 2) , 'utf8');
   }
   catch(e){
      console.warn(e.message);
   }
}
  相关解决方案