0

続編のコールバック関数で接続フラッシュを動作させるのに問題があります。

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()); '上に呼ばれています。

すべてが続行されるため、アプリの破損エラーではありませんが、メッセージをフラッシュする必要があります。それ以外の場合は、ユーザー登録の成功/失敗を処理するために無駄なルートを追加で作成する必要があります。

4

0 に答える 0