如何在Express中将价值从一条路线传递到另一条路线?

时间:2020-01-09 08:54:25

标签: javascript node.js express

我有一条简单的路由,该路由发出POST请求并返回具有多个值的对象。我想在另一条(不同的)路由中将返回值之一用于不同的逻辑。有没有办法将这些数据从一条路线传递到另一条路线?

router.post('/register', (req, res, next) => {

    // call some function that returns an object for use in another route eg:
    myFunction()
    .then((data) => {
        console.log(data)
    })
    .catch((err) => {
        console.log(err)
    })
});

router.post('/verify', (req, res, next) => {

    // use the data returned from the register route for verification logic 

});



2 个答案:

答案 0 :(得分:1)

您可以使用npm软件包 connect-flash 在路由之间传递数据

var express = require('express');
var flash = require('connect-flash');
var app = express();
app.use(flash());

app.get('/login', function(req, res){
  // Set a flash message by passing the key, followed by the value, to req.flash().
  req.flash('username', 'Gaurav Gupta')
  res.redirect('/profile');
});

app.get('/profile', function(req, res){
  // Get an array of flash messages by passing the key to req.flash()
  let message = req.flash('username')
  res.render('index', { message: message }); // or {message} only es6 feature
});

或者您也可以在路线上使用中间件

router.post('/register', middleware(), (req, res) => {
   ...
});

//定义中间件

function middleware(){
  return function(req, res, next){
    ...perform actions
    next()
  }
}

//重用路由中的中间件

router.post('/verify', middleware(), (req, res) => {
   ...
});

答案 1 :(得分:0)

您可以尝试将会话值存储在会话中,然后从会话变量中读取它。 要么 您可以创建一个加密的令牌并将其作为注册响应发送给用户,然后在验证路由中采用令牌并将其解密。