Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问把手中的app.locals变量_Javascript_Node.js_Express_Mongoose - Fatal编程技术网

Javascript 如何访问把手中的app.locals变量

Javascript 如何访问把手中的app.locals变量,javascript,node.js,express,mongoose,Javascript,Node.js,Express,Mongoose,app.js var debug = require('debug'); var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-par

app.js

var debug = require('debug');
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
javvar mongoose = require('mongoose');
var session = require('express-session');
var db = require('./dbconn');

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  console.log('we are connected!');
});

var index = require('./routes/index');
var users =
  require('./routes/users');
var signup = require('./routes/signup');
var login = require('./routes/login');
var adreqform =
  require('./routes/adreqform') var dashboard =
    require('./routes/dashboard')

var app = express();

// view engine setup app.set('views', path.join(__dirname, 'views'));
app.engine('hbs', exphbs({
  extname: '.hbs',
  defaultLayout: 'layout'
}));
app.set('view engine', 'hbs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,
  'public')));
app.use(session({
  secret: 'gh jewellery',
  resave: true,
  saveUninitialized: false


}));
app.use(function(req, res, next) {

  app.locals.currentUser = req.session.user;
  next();
});

app.use('/', index);
app.use('/users', users);
app.use('/dashboard',
  dashboard);
app.use('/signup', signup);
app.use('/login', login);
app.use('/adreqform', adreqform);

// catch 404 and forward to error handler app.use(function (req, res,
next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler // will print stacktrace if
(app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler // no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

app.set('port', process.env.PORT || 3000);

module.exports = app;

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});
var express = require('express');
var router = express.Router();
var User = require('../models/user.model.js');
var app = require('../app'); 

/* GET signup page. */
router.get('/', function(req, res, next) {
  res.render('login');
});

router.post('/', function(req, res, next) {

  User.findOne({
    email: req.body.email
  }, function(err, user) {
    var logged = false;
    if (err) {
      console.log(err);
    } else if (!user) {

      res.render('login', {
        errnoacc: 'User does not exist! Please register.'
      })
    } else if (user && req.body.password == user.password) {

      req.session.user = user;
      res.render('dashboard');

    } else {
      res.render('login', {
        errpass: 'Password does not match. Please try again!'
      });
    }

  });

  next();

});

module.exports = router;
注意我分配
app.locals.currentUser=req.session.user
req.session.user
被设置,下面是代码

login.js

var debug = require('debug');
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
javvar mongoose = require('mongoose');
var session = require('express-session');
var db = require('./dbconn');

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
  console.log('we are connected!');
});

var index = require('./routes/index');
var users =
  require('./routes/users');
var signup = require('./routes/signup');
var login = require('./routes/login');
var adreqform =
  require('./routes/adreqform') var dashboard =
    require('./routes/dashboard')

var app = express();

// view engine setup app.set('views', path.join(__dirname, 'views'));
app.engine('hbs', exphbs({
  extname: '.hbs',
  defaultLayout: 'layout'
}));
app.set('view engine', 'hbs');

// uncomment after placing your favicon in /public
//app.use(favicon(__dirname + '/public/favicon.ico'));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
  extended: false
}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname,
  'public')));
app.use(session({
  secret: 'gh jewellery',
  resave: true,
  saveUninitialized: false


}));
app.use(function(req, res, next) {

  app.locals.currentUser = req.session.user;
  next();
});

app.use('/', index);
app.use('/users', users);
app.use('/dashboard',
  dashboard);
app.use('/signup', signup);
app.use('/login', login);
app.use('/adreqform', adreqform);

// catch 404 and forward to error handler app.use(function (req, res,
next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handlers

// development error handler // will print stacktrace if
(app.get('env') === 'development') {
  app.use(function(err, req, res, next) {
    res.status(err.status || 500);
    res.render('error', {
      message: err.message,
      error: err
    });
  });
}

// production error handler // no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

app.set('port', process.env.PORT || 3000);

module.exports = app;

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});
var express = require('express');
var router = express.Router();
var User = require('../models/user.model.js');
var app = require('../app'); 

/* GET signup page. */
router.get('/', function(req, res, next) {
  res.render('login');
});

router.post('/', function(req, res, next) {

  User.findOne({
    email: req.body.email
  }, function(err, user) {
    var logged = false;
    if (err) {
      console.log(err);
    } else if (!user) {

      res.render('login', {
        errnoacc: 'User does not exist! Please register.'
      })
    } else if (user && req.body.password == user.password) {

      req.session.user = user;
      res.render('dashboard');

    } else {
      res.render('login', {
        errpass: 'Password does not match. Please try again!'
      });
    }

  });

  next();

});

module.exports = router;
在上面的代码中,当点击POST时,我分配
req.session.user=user如果一切正常,我渲染仪表板视图时,有一个layout.hbs,它有导航栏,我想在这里使用
app.locals.currentUser
来显示
currentUser
对象

在my layouts.hbs{{currentUser.username}中使用不起作用

我是
expressjs
开发新手,因此我知道我缺少了一些东西。

保留所有应用程序的设置,如果你的应用程序获得多个用户,它将覆盖这些信息

app.use(function(req, res, next) {
  app.locals.currentUser = req.session.user;
  next();
});
您可以使用:

然后,您可以进入把手,如:

p #{user.userName}
保存所有应用程序的设置,如果您的应用程序获得多个用户,它将覆盖该信息

app.use(function(req, res, next) {
  app.locals.currentUser = req.session.user;
  next();
});
您可以使用:

然后,您可以进入把手,如:

p #{user.userName}