在req.user javascript express中传递数据



我有一个简单的express服务器:

var express = require('express');
var app = express();
var port =  process.env.PORT || 3000;
var consentRoutes = require('./src/routes/consentRoutes.js');
app.use('/consents', (req, res, next) => {
req.user="Eleftheria"
next();
}
,consentRoutes);
app.listen(port, ()=>{
console.log(`Server is running on port ${port}`)
})

文件:consentRoutes.js

const express = require('express');
const router = express.Router();
const consentControllers = require('../controllers/consentControllers')
//Creates an account access consent : /consents
router.post('/', consentControllers.createConsent);
module.exports = router;

然后是名为:consentControllers.js 的控制器文件

const request = require("request");
//Creates an account access consent: /consents
exports.createConsent = async (req, res, next) => {
console.log("user's name is:" );   
console.log(req.user);
next();
};

我的问题是req.user从来没有被打印过,怎么了?我想做的是,在文件consentControllers.js中传递数据,并能够在那里使用和访问它们。我真的很难表达,我仍在努力弄清楚一切是如何运作的。感谢您的帮助!

Express.js在中间件订单调用中追加数据。您在同意路由中间件执行之后分配了req.user。正确的是:

app.use(
"/consents",
(req, res, next) => {
req.user = "Eleftheria";
next();
},
consentRoutes
);

现在,您首先将user附加到req,然后将用户分配的req变量传递给下一个中间件consentRoutes

值得一提的是,直接为req分配属性不是一个好的做法。您应该使用res.locals

最新更新