続編のコールバック関数で接続フラッシュを動作させるのに問題があります。
router.route('/')
.post(function(aRequest, aResponse) {
var data = aRequest.body;
models.users.findOne({
where: {
email: data.email
}
}).then(function (aUser) {
if (!aUser) {
bcrypt.hash(data.password, null, null, function(err, hash) {
if(err) {
return next(err);
}
models.users.create({
firstname : data.firstname,
lastname : data.lastname,
email : data.email,
password : hash
}).then(function () {
aRequest.flash('success', 'User successfully created.');
}).done(function () {
aResponse.redirect('/login');
});
});
}
else {
// aRequest.flash('error', 'This email address is already registered');
aResponse.redirect('/login');
}
});
});
上記は私の現在のコードです。いくつかのバリエーションを試し、.then() でフラッシュとリダイレクトの両方を呼び出し、2 つの .then() を試し、現在は .done() を試しました。
次のエラーが表示されます。
未処理の拒否 TypeError: undefined is not a function at Instance.set (/home/node/shared/Heroku/landbou/node_modules/sequelize/lib/instance.js:348:68)
これは、aRequest.flash(...) を削除することで簡単に解決できます。
はい、' router.use(flash()); '上に呼ばれています。
すべてが続行されるため、アプリの破損エラーではありませんが、メッセージをフラッシュする必要があります。それ以外の場合は、ユーザー登録の成功/失敗を処理するために無駄なルートを追加で作成する必要があります。