NodeJS重新加载页面但不再发送用户数据

时间:2018-04-17 07:57:49

标签: html node.js

我有一个Node Js本地服务器和几个相同的html页面。在每个页面上,我保存了一些简单保存在文本文件中的用户数据输入字段。我的问题是,如果用户刷新页面,前一个html页面中的数据将再次发送,并再次保存在文本文件中。有办法防止这种情况吗?

var fs = require('fs');
const log=require('simple-node-logger').createSimpleLogger();
var express = require('express');
var bodyParser = require('body-parser');
var app = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
var port = process.env.PORT || 8000;

app.use(express.static(__dirname + '/server'));
app.use(express.static(__dirname + "/public"));
app.use('/images', express.static(__dirname +'/images'));

app.listen(port, function(){
    console.log('server is running on ' + port);
});


app.get('/', function(req, res){
    res.sendfile('intro.html');
});

app.post('/userID', function(req, res){
  //save the userID on a text file
  var userID= req.body.userID + ';';
  var data = fs.appendFileSync('temporary/userID.txt', userID, 'utf8');

  return res.sendfile('main.html');
});

app.post('/submit', function(req, res){

  res.sendfile('main2.html');
});

此外,我还有一个与浏览器刷新按钮相同的刷新按钮。我有办法避免同样的问题吗?

  <button>Reset</button>

及其JavaScript:

document.addEventListener('DOMContentLoaded', function () {
      document.querySelector('button').addEventListener('click', clickHandler);
    });

    function clickHandler(element) {
          location.reload();
    }

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用fs.readFile并检查该文件是否包含userId

如果不存在,则 append dont append

fs.readFile('temporary/userID.txt', function (err, fileData) {
    if (err) throw err;
    if(fileData.indexOf(userID) == -1){
        var data = fs.appendFileSync('temporary/userID.txt', userID, 'utf8');
     }
});

所以,代码将是:

app.post('/userID', function(req, res){
  //save the userID on a text file
  var userID= req.body.userID + ';';
  fs.readFile('temporary/userID.txt', function (err, fileData) {
    if (err) throw err;
    if(fileData.indexOf(userID) == -1){
      var data = fs.appendFileSync('temporary/userID.txt', userID, 'utf8');
    }
  });
  return res.sendfile('main.html');
});
相关问题