"connect-flash": "^0.1.1",
"cookie-parser": "^1.4.3",
"ejs": "^2.4.2",
"express": "^4.14.0",
"express-session": "^1.13.0",
나는이 게시물 요청을 작성하여 기존 사용자 이름 또는 전자 메일이 존재하는지 확인하고, 그렇다면 사용자 이름 또는 전자 메일 중 하나를 말하는 메시지를 깜박입니다. 아무 것도 찍히지 않으면 데이터를 저장하고 데이터베이스에 저장합니다. 내 질문은 "사용자 이름이 사용되었습니다"라는 메시지 또는 "그 이메일이 사용되었습니다"라는 메시지를 깜박이기 위해서 usernameFlash(); res.redirect('/')
으로 전화해야합니다. 이를 위해서는 홈페이지로 리디렉션해야합니다. 홈페이지로 이동하면 사용자에게 이메일이나 사용자 이름이 있는지 알려주지 않습니다. 이 시나리오에서 리디렉션을 호출하지 않고 어떻게 메시지를 플래싱 할 수 있습니까?플래시 메시지에 리디렉션이 필요합니다
app.post('/signup', function(req, res) {
function usernameFlash(){
req.flash('messages', 'That username is taken.');
}
function emailFlash(){
req.flash('messages', 'That email is taken.');
}
var userDetails = User({
firstname: req.body.firstname,
username: req.body.username,
email: req.body.email,
password: bcrypt.hashSync(req.body.password1, bcrypt.genSaltSync(10))
});
User.findOne({
$or: [ { 'username': req.body.username}, {'email': req.body.email}]
}, function(err, user) {
if (user) {
if(user.username === req.body.username){
usernameFlash();
res.redirect('/')
} else {
}
if(user.email === req.body.email){
emailFlash();
res.redirect('/')
} else {
}
} else {
userDetails.save(function(err) {
if (err) throw err;
});
res.redirect('/');
console.log('change to login')
}
if (err) {
return done(err);
}
});
});