将值传递到EJS文件

时间:2019-01-10 07:22:55

标签: javascript node.js express ejs

我试图将值从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});
});

我的文件夹结构的图片(如果有帮助的话)。

A picture of my folder structure if it helps.

1 个答案:

答案 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});
});

Read more on express-sessions

GitHub:express-sessions