javascript - 如何在 OOP 类中更新 Object json
问题描述
我的 JSON 文件
[
{
"id": 1,
"task": "go dancing",
"status": false
},
{
"id": 2,
"task": "Walk",
"status": false
}
]
我真的被困在我的 OOP 上,我试图Status
在我的 json 中找到该属性,我想将属性 boolean tp 更新为true
false
这是我的代码
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
仍然是错误的
解决方案
考虑使用 Array#find。Object 将是对数据数组内部对象的引用,因此更改它也会更改数据内部的内容。
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);
您还应该记住,fs.writeFileSync
它不会返回任何内容,但如果失败,它会抛出错误。
考虑一下,将其包装在 try/catch 中:
static writeFile(data) {
try {
fs.writeFileSync("./data.json", JSON.stringify(data, null, 2) , 'utf8');
}
catch(e){
console.warn(e.message);
}
}
推荐阅读
- c# - 我的脚本没有激活 UI 也没有播放动画
- python - 我应该如何找到最适合可能的对数散点图的线?
- python - 使用 tkinter,如何解决 python 中第二个按钮导致第二个按钮无法正确显示的问题
- sharepoint - sharepoint在线现代页面微软搜索如何使用页面属性进行搜索
- php - 如何在 Magento 2 中使用 sftp 将文件从一台服务器传输到另一台服务器?
- java - 为什么 private int d 不能写在 maxPath() 中,而是在 diameterOfBinaryTree() 之前
- html - 获取 HTML 中的最后第二项
- python - 我可以修改一个数据表以匹配另一个几乎相似的数据框 ID 吗?
- c++ - C 标准的哪些部分证明了整数类型的对应关系?
- flutter - 验证 TextFormField [Flutter] 的两件事