【问题标题】:Router redirecting with error message带有错误消息的路由器重定向
【发布时间】:2016-09-13 16:55:44
【问题描述】:

我有一个关于重定向到页面并提供错误消息的最佳做法的问题。例如,一个人正在注册为新用户,并且他们选择的用户名已经在使用中。我想将它们重定向回注册页面(基本上是一个表单),但显示一条错误消息。我应该在路由代码中设置一个 cookie 并让 javascript 显示错误还是有一个最佳实践?

router.post('/register', function(req, res) {

  var username = req.body.username;
  db.fetchUser(username, function(err, user){
    if (!err && !user) {
      db.addUser(req.body.username, req.body.password, "vendor", function(err) {
        if (!err) {
          res.redirect('/portal');
        }
        else {
          // TODO: Set error.
          res.redirect('/register');
        }
      }
    }
    else {
      // return error already exists.
      res.redirect('/register');
    }
  });
});

【问题讨论】:

  • 如果您已经在使用会话,您可以使用flash 中间件。

标签: node.js express routes


【解决方案1】:

我最终使用了 express-session,这似乎是一种干净的方式。

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var session = require('express-session');
var routes = require('./routes/index');
var portal = require('./routes/portal');

var FileStore = require('session-file-store')(session);
var app = express();

app.use(session({
    secret: "flibbernachosqueezance",
    store: new FileStore,
    saveUninitialized: true,
    resave: true
}));

然后对会话变量使用类似的东西:

      req.session.userMessage = "This username already exists: "+username;

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 2019-12-14
    • 2013-04-04
    • 1970-01-01
    • 2022-07-18
    • 1970-01-01
    • 2018-09-13
    • 2017-12-06
    相关资源
    最近更新 更多