我试图将值从POST路由传递到EJS文件并显示它。我已经尝试过重定向,发送和呈现结果,但不会传递给EJS文件。
这是我的login.js的POST:
router.post('/', (req, res) => {
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
if (err) throw err;
var dbo = db.db("tmai");
dbo.collection('users').findOne({username: req.body.user, password: req.body.pass}, function (err, result) {
if (err) console.log(err);
if (result === null) res.send('null');
else {
res.send({user: result.username});
// res.redirect('/login');
// res.render('login/login', {user:req.body.user});
}
db.close();
});
});
});
这是我的主页的GET,我试图在其中获取用户的价值。从上述POST发送请求后,我仍然获得未定义用户:
router.get('/', (req, res) => {
console.log(req);
res.render('home/home', {user: req.body.user});
});
我的文件夹结构的图片(如果有帮助的话)。
答案 0 :(得分:0)
这是我的主页的GET,我试图在其中获取用户的价值。从上述POST发送请求后,我仍然获得未定义用户:
听起来像您需要一些会话。
会话可帮助您的应用在用户当前正在使用您的应用时(例如,登录后)保存/保留用户数据。
在登录时验证了用户信息之后,您可以在会话存储中存储有关该用户的一些凭据(用户名/ ID),这样就可以根据该用户的请求访问该凭据。
const express = require('express');
const session = require('express-session');
const app = express();
//- Apply & configure a session middleware
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true
}))
//- Usage in routes
router.post('/', (req, res) => {
//- Db user lookup code to get result.username
//- Save username in session
req.session.username = result.username;
//- Then goes your rendering & redirects code
});
在这里,您将能够参考会话中用户访问的其他路线上的username
值;
router.get('/', (req, res) => {
console.log(req.session.username);
res.render('home/home', {user: req.session.username});
});
GitHub:express-sessions