Node/Express/Jade 将用户名传递回视图
Node/Express/Jade passing username back to view
这是我使用所有这些技术的第一个项目,我通常会这样做 Angular,但我正在为一家慈善机构工作(并且热衷于学习节点)。这是第三天。
在登录期间,这是调用的方法:
schema.statics.authenticateAndLoad = function(req, res, next) {
var userId = req.body.email;
res.locals.userId = userId;
这应该用于存储值,因此不需要重新输入。如果登录失败,它会这样做:
return next('Login failed. Please enter your details and try again.');
然后在我的 Jade 模板中:
if(locals.userId)
p Welcome to #{userId}
else
p Welcome
实际模板有代码来尝试做我想做的事:
input(type='text', name='email', id="inputEmail", placeholder="Email", value="#{body.email || ''}")
但这不起作用。
所以,我认为这意味着当我调用 'next' 时我在结果中设置的值丢失了,但是,因为它也传递了这个错误对象以显示在屏幕上,我不确定我将如何着手确保显示此错误并使值通过。现在,我的文字只是说 'welcome' 而不是 'welcome to xx',这是测试代码,我只是在证明该值没有被传递。
我的问题是,将值传递到我的模板并触发显示的错误消息的正确方法是什么。
代码,当我进入它时,深入到 Express 并检查那里的错误。
您好,很高兴看到一些开发人员从事慈善工作。
假设这是一个中间件,通常你会使用这样的东西
schema.statics.authenticateAndLoad = function(req, res, next) {
var userId = req.body.email;
res.locals.userId = userId;
loginFunction(userdetails,function(error,result){
//if there is an error you need to render the page or do a redirect to the
//login page
if(error){
var msg = 'Login failed. Please enter your details and try again.'
return res.render('login',{userId: userId,error: msg})
//this renders the login page and passes req.body.email to the page as userID and the msg as error
}
if(result){
//if this is correct you return next() as you are saying
//you may go through
return next()
}
}
}
然后在你的玉石上显示你使用的错误和用户ID
p #{userID}
p #{error}
因此,为了回答您的问题,将值发送给 jade 的正确方法是使用它传递它并将错误作为变量传递。
return res.render(template_name,{userId: req.body.email,error: msg})
希望对您有所帮助
这是我使用所有这些技术的第一个项目,我通常会这样做 Angular,但我正在为一家慈善机构工作(并且热衷于学习节点)。这是第三天。
在登录期间,这是调用的方法:
schema.statics.authenticateAndLoad = function(req, res, next) {
var userId = req.body.email;
res.locals.userId = userId;
这应该用于存储值,因此不需要重新输入。如果登录失败,它会这样做:
return next('Login failed. Please enter your details and try again.');
然后在我的 Jade 模板中:
if(locals.userId)
p Welcome to #{userId}
else
p Welcome
实际模板有代码来尝试做我想做的事:
input(type='text', name='email', id="inputEmail", placeholder="Email", value="#{body.email || ''}")
但这不起作用。
所以,我认为这意味着当我调用 'next' 时我在结果中设置的值丢失了,但是,因为它也传递了这个错误对象以显示在屏幕上,我不确定我将如何着手确保显示此错误并使值通过。现在,我的文字只是说 'welcome' 而不是 'welcome to xx',这是测试代码,我只是在证明该值没有被传递。
我的问题是,将值传递到我的模板并触发显示的错误消息的正确方法是什么。
代码,当我进入它时,深入到 Express 并检查那里的错误。
您好,很高兴看到一些开发人员从事慈善工作。
假设这是一个中间件,通常你会使用这样的东西
schema.statics.authenticateAndLoad = function(req, res, next) {
var userId = req.body.email;
res.locals.userId = userId;
loginFunction(userdetails,function(error,result){
//if there is an error you need to render the page or do a redirect to the
//login page
if(error){
var msg = 'Login failed. Please enter your details and try again.'
return res.render('login',{userId: userId,error: msg})
//this renders the login page and passes req.body.email to the page as userID and the msg as error
}
if(result){
//if this is correct you return next() as you are saying
//you may go through
return next()
}
}
}
然后在你的玉石上显示你使用的错误和用户ID
p #{userID}
p #{error}
因此,为了回答您的问题,将值发送给 jade 的正确方法是使用它传递它并将错误作为变量传递。
return res.render(template_name,{userId: req.body.email,error: msg})
希望对您有所帮助