Передача значения в файл EJS - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь передать значение из маршрута POST в файл EJS и отобразить его. Я попытался перенаправить, отправить и обработать результаты, но они не будут переданы в файл EJS.

Это мой POST для моего login.js:

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 голосов
/ 10 января 2019

Это мой GET для моей домашней страницы, где я пытаюсь получить значение для пользователя. После отправки запроса из POST выше, я все еще получаю пользователя как неопределенного:

Похоже, вам нужно сеансов .

Сеансы помогают вашему приложению сохранять / учитывать пользовательские данные, когда пользователь в данный момент использует ваше приложение, например, После входа в систему.

После того, как вы проверили информацию о пользователе при входе в систему, вы можете сохранить некоторые учетные данные об этом пользователе (имя пользователя / идентификатор) в хранилище сеансов, чтобы они были доступны по запросам этого пользователя, например, так:

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: экспресс-сессии

...