0
"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);
}
});
});