如何在Node.js中重置JSON文件

时间:2019-06-28 16:44:20

标签: javascript node.js json

单击按钮后,我需要将json文件重置为原始状态。目前,我正在使用路由器建模,并且需要帮助来扩展现有代码。

这是我在server.js文件上编写的代码段,我运行“ nodemon”来启动服务器。

var messages = [{index:0, rating:0}, {index:1, rating:0}]
app.get('/votes', (req, res) =>{
    res.send( messages )
})

app.post('/votes', (req, res) =>{
    votes.push(votes)
    res.sendStatus(200)
})

所以我对文件“票”(json格式)的初始状态是:

[{"index":0,"rating":0}, {"index":1, "rating":0}]

在执行一些用户操作之后,我将使用以下代码将一些数据添加到此json文件中:

<body>
// some logic here
    <script>
        $(() => {
            $("#submit").click(()=>{
                var message = [ { index:1, rating: $("#input").val()},
                                { index:2, rating: $("#input2").val()}]
                postMessage(message)
            })
        })
        function postMessage(message) {
            $.post('http://localhost:8080/votes', message)
        }
   </script>
</body>

然后我的json文件中包含以下内容

[{"index":0,"rating":0}, {"index":1, "rating":0}, {"index":1, "rating":1}, {"index":2, "rating":3}]

问题:如何通过单击按钮进行新交易将json文件(不是json变量)重置为初始状态? 我只是在进行原型制作,因此可以使用一种快速而肮脏的方法。

3 个答案:

答案 0 :(得分:1)

我会建议构建或使用某种形式的用户验证,并且每个用户都有一份仅适合他的初始数据副本。请记住,这些数据永远不会被垃圾收集,因此您将必须自己管理删除。我使用了Express提供的基本IP,但这不是一个好习惯。 使用npm-memorystore可以进行一些内存管理。 如果要标识用户,可以使用express-sessionexpress-jwt

var messages = [{
    index: 0,
    rating: 0
}, {
    index: 1,
    rating: 0
}];
var usersMessages = {};

app.get('/votes', (req, res) => {
    var userIp = req.ip;
    usersMessages[userIp] = [].concat(messages);
    res.send(usersMessages[userIp]);
});

app.post('/votes', (req, res) => {
    var userIp = req.ip;
    var userVotes = usersMessages[userIp];
    if (!userVotes)
        usersMessages[userIp] = [].concat(messages);
    usersMessages[userIp].push(req.body.votes);

    res.sendStatus(200)
});

答案 1 :(得分:1)

看看这个:

$(() => {
  let message = [];

  $("#submit").click(() => {
    //fill with values
    message = [
      { index: 1, rating: $("#input").val() },
      { index: 2, rating: $("#input2").val() }
    ];

    postMessage(message); //send post
    message = []; //reset array
  });

  function postMessage(message) {
    $.post("http://localhost:8080/votes", message);
  }
});

Hope this helps. =D

答案 2 :(得分:0)

您需要做的就是从数组中删除所有对象。

您可以按照以下步骤进行操作。

var messages = [{"index":0,"rating":0}, {"index":1, "rating":0}, {"index":1, "rating":1}, {"index":2, "rating":3}];
messages.length = 1;
console.log(messages);

另一种方式。

var messages = [{"index":0,"rating":0}, {"index":1, "rating":0}, {"index":1, "rating":1}, {"index":2, "rating":3}];  
messages = messages.slice(0,1);
console.log(messages);

上面的代码是做什么的,它将只是将数组设置回它的第一个值。