繁体   English   中英

针对每个请求,将对象添加到Node.js中JSON文件中的数组中

[英]Add object to an array in a JSON `file` in Node.js for each request

我在前端有一个图像。 当用户右键单击图像时,该点的坐标将存储在变量中,然后使用AJAX发布请求将该变量发送到节点服务器。 然后在服务器端,我将x,y坐标作为对象存储到文件中。 当用户右键单击图像上的其他位置时,我想继续将x,y坐标集作为与先前对象不同的对象堆积到同一文件中。 问题是,当我右键单击其他位置时,该点的坐标将替换文件中的前一个坐标,而不是添加到文件中并同时保留前一个坐标。 我该如何实现?

.post(function(request, response){
    console.log("Request received");
    var util = require('util');
    var coordinates = request.body;
    var imageCoordinates = JSON.stringify(coordinates);
    fs.writeFile('coords.json', imageCoordinates, finished);

    function finished(err){
        console.log('all set.');
    }

    console.log('coords are:', coordinates);        
    response.send("All OK");
}); 

这是我的server.js文件中的请求处理程序函数。

fs.writeFile:异步将数据写入文件,如果文件已经存在,则替换该文件。

fs.appendFile:异步将数据添加到文件,如果该文件尚不存在,则创建该文件。

代码有两个问题,

使用appendFile代替writeFile,修改了以下代码。 此外,一旦写入完成,您还需要发送响应。

完成函数(err){console.log('all set。'); response.send(“一切正常”); }

否则,响应可能会在写入完成之前提前进行。

.post(function(request, response){
    console.log("Request received");
    var util = require('util');
    var coordinates = request.body;
    var imageCoordinates = JSON.stringify(coordinates);
    fs.appendFile('coords.json', imageCoordinates, finished);

    function finished(err){
        console.log('all set.');
        response.send("All OK");
    }

    console.log('coords are:', coordinates);        

}); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM