我在Node Js中使用fs遇到过读写操作。
我的情况就像是,我有一个包含数据的文件,
[
{
"Pref":"Freedom",
"ID":"5545"
},
{
"Pref":"Growth",
"ID":"8946545"
}
]
我必须使用Node js替换ID为5545的元素的Pref。
我该怎么办?谢谢
答案 0 :(得分:1)
为了做你想做的事,你需要:
fs.readFile()
JSON.parse()
JSON.stringify()
fs.writeFile()
但这并不像看起来那么简单,因为你必须:
考虑到所有这些,您应该考虑使用数据库来存储任何更改的数据。某些数据库(如Mongo,Postgres或Redis)需要作为独立应用程序在相同或不同的服务器上运行。像SQLite这样的嵌入式数据库不需要独立的流程,可以直接在您的应用程序中运行。
并不是说不可能写入JSON文件然后根据需要读取这些文件,但是你必须做的工作量才能同步访问数据而不是偶然阻止事件循环的过程要比按预期使用任何数据库困难得多。
答案 1 :(得分:0)
你有一些数据:
for (i=0;i<comp.mesh.geometry.attributes.position.array.length;i++){
comp.mesh.geometry.attributes.normal.array[i*3 + 1] = 0;
comp1.mesh.geometry.attributes.normal.array[i*3 + 1] = 0;
}
首先,我们需要找到您要更改的元素(如果有多个ID为5545的项目,请使用const data = [
{
"Pref":"Freedom",
"ID":"5545"
},
{
"Pref":"Growth",
"ID":"8946545"
}
]
仅选择第一个元素:
[0]
然后改变它!
const objectToChange = data.filter(item => item.ID === "5545")[0]
我们可以看到数据对象中反映的变化:
objectToChange['Pref'] = "Liberty"
答案 2 :(得分:0)
1-加载文件:let json = JSON.parse(fs.readFileSync('file.json', 'utf-8'));
2-更新内容:
json = json.map(el => {
if(el.ID === "5545") {
el.Pref = "TEST";
}
return el;
});
3-再次保存?
fs.writeFileSync('test.json', JSON.stringify(json), 'utf-8');