我有一条简单的路由,该路由发出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
});
答案 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)
您可以尝试将会话值存储在会话中,然后从会话变量中读取它。 要么 您可以创建一个加密的令牌并将其作为注册响应发送给用户,然后在验证路由中采用令牌并将其解密。