我使用express-session来保存路由器中的一些值,并在以后显示它们。但是,即使我在设置req.session.euro_amount之后立即对其执行console.log操作,它也会显示正确的数量。
routes/api/convert.js:
const express = require('express');
const router = express.Router();
const CC = require('currency-converter-lt')
router.post('/', (req, res) => {
let amount_e = parseInt(req.body.amount_e);
let amount_k = parseInt(req.body.amount_k
let currencyConverter = new CC()
if(!amount_e){
// Convert to Euro
currencyConverter.from("HRK").to("EUR").amount(amount_k).convert().then((response) => {
console.log(response); // Correct value that I want to save
req.session.euro_amount = response;
console.log("Set amount in session: " + req.session.euro_amount); // Output: Set amount in session: 0.65
})
}
res.redirect('/');routes/index.js:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
let euro_amount = req.session.euro_amount;
res.render('index', { title: 'Express', euro_amount });
});
module.exports = router;app.js (简化):
var express = require('express');
var path = require('path');
var session = require('express-session');
var indexRouter = require('./routes/index');
var convertRouter = require('./routes/api/convert');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(session({secret: 'S0meFancyS3c3t', resave: false, saveUninitialized: false, secure: false}));
app.use('/', indexRouter);
app.use('/api/convert', convertRouter);
module.exports = app;index.js路由器工作正常,因为如果我手动重写amount_euro,它会毫不费力地传输到前端。
在这个设置中,我如何在app.js或其他设置中启动会话的方式有误吗?
具体的问题是我不能访问routes/index.js文件中的req.session.euro_amount。
发布于 2021-07-25 18:54:23
在你的路由器里。post,你可能需要导入主体解析器,这是后端需要的(‘主体解析器’),以获得数据u从前端发布的req.body。
如果没有正文解析器,req.body将无法获取您发布的数据。
https://stackoverflow.com/questions/68517119
复制相似问题