我有一个简单的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。