2015-11-05 73 views
1

我的問題是,當我嘗試呈現頁面時,req.body變得不確定。req.body在傳遞給res.render後變爲undefined

我的應用程序代碼:

var https = require('https'); 
var fs = require('fs'); 
var mongourl = "mongodb://localhost:27017/auntyinda"; 
var mongoose = require('mongoose'); 
fs.readdirSync(__dirname + '/models').forEach(function (filename) { 
    if (~filename.indexOf('.js')) require(__dirname + "/models/" + filename); 
}); 
//var queries = require('./mongoq/query') 

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'); 
var expressSession = require('express-session'); 
var passport = require('passport'); 

var myPass = require('./security/auth') 
var routes = require('./routes/index'); 
//var users = require('./routes/users'); 

var app = express(); 
var server = https.createServer({ 
    cert: fs.readFileSync(__dirname + '/my.crt'), 
    key: fs.readFileSync(__dirname + '/my.key') 
},app).listen(4000); 

// view engine setup 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'ejs'); 

// uncomment after placing your favicon in /public 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
//app.configure(function(){ 

app.use(logger('dev')); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
//app.use(require('connect').bodyParser()) 
app.use(cookieParser()); 
app.use(expressSession({ 
    secret: process.env.SESSION_SECRET || 'sonic12', 
    resave: false, 
    saveUninitialized: false 
    })) 
app.use(passport.initialize()); 
app.use(passport.session()); 
app.use(express.static(path.join(__dirname, 'public'))); 

//}); 

mongoose.connect(mongourl) 
//app.use('/', myPass); 
app.use('/', routes); 
//app.use('/users', users); 


//app.locals.appdata = require("./data.json") 

我的航線代碼:

router.post('/register', function(req, res, next) { 
    regcheck(req.body.username, req.body.password, req.body.passwordConfirm, function (error) { 
    if (error) { 
     console.log(req.body) //OUTPUT IS WHAT IS EXPECTED. NICE JSON FORMAT. 
     res.render('register', { 
     title: 'Register', 
     classname: 'register', 
     socialIcons: socialIcons, 
     isAuthenticated: false, 
     regdata: req.body, 
     err: error 
     }) 
    } 
    }) 
}) 

我想渲染使用Regdata中對象來填充這是很好的回登記表的數據。但是由於一些奇怪的原因,到達渲染時它變得沒有定義。

我EJS文件中包含該行的頂部:

<% console.log('Error recieved: '); console.log(err); console.log(regdata); %> 

但是,console.log(regdata)的輸出爲undefined。這裏發生了什麼?應該打印err。在此先感謝您的幫助。

+0

嘗試像'regdata:_.clone(req.body)'或任何克隆函數或任何東西從http://stackoverflow.com/questions/122102/what-is-the-most-efficient-way-to -clone-an-object –

+0

我使用'npm install clone'作爲鏈接中推薦的選項之一,需要它並使用它,但仍然在ejs獲取訪問權限時尚未定義。 – seamusgalla

回答

0

試試這個, <pre><%= regdata %></pre>

我認爲你是什麼地方錯過了一個=。 請諮詢docs

+0

它似乎不是這個。這個問題似乎與ejs。我在這個問題上進一步縮小了問題http://stackoverflow.com/questions/33547629/ejs-include-wont-pass-local-variable – seamusgalla