如何防止在express.js中多次调用路由

时间:2019-02-13 15:08:48

标签: node.js express express-session

我是node.js的新手,我正在尝试使用express.js和express-session创建一个简单的任务列表应用程序。但是,由于我不了解的原因,在我发出请求时,大多数路由都称为两次或树次,因此不应。例如,如果我向/new发送请求,那么新任务有时会添加两次(或三次)而不是一次,这会导致问题...

我在其他线程中读到,问题可能出在浏览器上,试图获取一个favicon,但是如果我在console.log(req.url)路径上记录所有传入的请求URL(/new),则重复的请求会总是/new而不是收藏夹图标...

这是我的代码:

var express = require('express');
var session = require('express-session');

// Create a new express application instance
var app = express();

// Initialize session
app.use(session({
    secret: 'secret',
    resave: true,
    saveUninitialized: true,
    cookie: {}
}));

// Initialize req.session.tasks if needed
app.use(function (req, res, next) {
    if (req.session.tasks === undefined) {
        req.session.tasks = [];
    }
    next();
});

app.get('/', function (req, res) {
    res.send(req.session.tasks);
});

// Create a Test Task 
app.get('/new', function (req, res) {
    console.log(req.url);
    req.session.tasks.push("Test Task");
    res.redirect('/');
});

app.get('/clear', function (req, res) {
    req.session.tasks = [];
    res.redirect('/');
})

app.listen(3000, function () {
    console.log('Task Server is listening on port 3000!');
});

您是否知道此问题的可能原因以及如何避免它?

非常感谢!

0 个答案:

没有答案