Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免覆盖节点中的现有文件json对象_Javascript_Node.js_Json_Filewriter - Fatal编程技术网

Javascript 如何避免覆盖节点中的现有文件json对象

Javascript 如何避免覆盖节点中的现有文件json对象,javascript,node.js,json,filewriter,Javascript,Node.js,Json,Filewriter,我试图解决一个问题,即我试图编写一个包含用户输入详细信息的json文件。但每次我输入新的细节,它都会覆盖现有的数据 如何避免覆盖json文件中现有的json对象,并根据用户输入在数组中添加新对象 userData.json: server.js:- 为了附加数据而不是替换数据,可以向fs.writeFile传递+标志: 如果文件不存在,它将创建该文件。如果文件存在,则将追加内容。为了追加数据而不是替换数据,可以向fs.writeFile传递+标志: 如果文件不存在,它将创建该文件。如果文件存在,

我试图解决一个问题,即我试图编写一个包含用户输入详细信息的json文件。但每次我输入新的细节,它都会覆盖现有的数据

如何避免覆盖json文件中现有的json对象,并根据用户输入在数组中添加新对象

userData.json:

server.js:-


为了附加数据而不是替换数据,可以向fs.writeFile传递+标志:


如果文件不存在,它将创建该文件。如果文件存在,则将追加内容。

为了追加数据而不是替换数据,可以向fs.writeFile传递+标志:


如果文件不存在,它将创建该文件。如果文件存在,则将追加内容。

以下是执行此操作的方法:

fs.readFile('./userdata.json', (err, data) => {
    if (err){
        console.log(err);
    } else {
        obj = JSON.parse(data);
        obj.push(sendData);
        json = JSON.stringify(obj); 
        fs.writeFile('./userdata.json', json, callback);
}});

每次要添加记录时,都要读取数组,附加到数组中,然后再次转储它。但是,考虑切换到数据库以避免这一点。

< P>这是一个肮脏的方式:

fs.readFile('./userdata.json', (err, data) => {
    if (err){
        console.log(err);
    } else {
        obj = JSON.parse(data);
        obj.push(sendData);
        json = JSON.stringify(obj); 
        fs.writeFile('./userdata.json', json, callback);
}});

每次要添加记录时,都要读取数组,附加到数组中,然后再次转储它。但是,考虑切换到数据库以避免这个.< /p> f.AppEdFrm,但是您可以省略[]。这样,在读取时可以解析文件。或者,最肮脏的做法是读取文件,解析文件,将新对象添加到解析后的数组中,然后再次转储。注意,使用appendFile,除非正确追加,否则可能会生成格式错误的json。例如,如果最后编写的是一个对象{…},而您附加了另一个对象,那么它将以{…}{…}结束,这是格式错误的json。读入、解析、修改然后保存更容易。@ParthShah省略[]这种方式意味着什么?我试过用appendFile。未使用dfs.appendFile,但可以省略[]。这样,在读取时可以解析文件。或者,最肮脏的做法是读取文件,解析文件,将新对象添加到解析后的数组中,然后再次转储。注意,使用appendFile,除非正确追加,否则可能会生成格式错误的json。例如,如果最后编写的是一个对象{…},而您附加了另一个对象,那么它将以{…}{…}结束,这是格式错误的json。读入、解析、修改然后保存更容易。@ParthShah省略[]这种方式意味着什么?我试过用appendFile。没用干这个。没有附加。尝试了这个。没有附加。
fs.writeFile('./userdata.json', data, { flag: 'a+' }, (err) => {
  if (!err) {
    console.log('done');
  }
});
fs.readFile('./userdata.json', (err, data) => {
    if (err){
        console.log(err);
    } else {
        obj = JSON.parse(data);
        obj.push(sendData);
        json = JSON.stringify(obj); 
        fs.writeFile('./userdata.json', json, callback);
}});