#javascript #node.js #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 и иметь возможность использовать их там и получать к ним доступ. Я действительно новичок в самовыражении и все еще пытаюсь понять, как все работает. Любая помощь будет признательна!
Ответ №1:
Express.js добавляет данные в вызов заказа промежуточного программного обеспечения. Вы назначили req.user
ПОСЛЕ выполнения промежуточного программного обеспечения consentRoutes. Правильным является:
app.use(
"/consents",
(req, res, next) => {
req.user = "Eleftheria";
next();
},
consentRoutes
);
Теперь вы сначала добавляете user
req
, а затем передаете следующему промежуточному consentRoutes
программному обеспечению переменную req с назначенным пользователем.
Стоит сказать, что назначение свойств непосредственно для req не является хорошей практикой. Для этого вам следует использовать res.locals.
Комментарии:
1. Я загрузил код, как вы мне сказали ( см. отредактированную версию выше), но код все равно не работает
2.Я загрузил код, как вы мне сказали ( см. отредактированную версию выше), но код все равно не работает
3. Например, вы вызываете localhost:3000/соглашается с методом POST от почтальона?