2016-11-08 8 views
0
次のように

私のセットアップは次のとおりです。は、ルータ/サブサイトなしで500エラーを投稿表明

投稿/registerには、引数を取り、パスポートとマングースを介してユーザを登録します。これがUserExistsErrorを返した場合、サーバーはこの情報を(httpエラー処理を介して)クライアントに送信します。

ただし、サーバーには発生してはならない500サーバーエラーも表示されます。

これは、クライアントが/registerにルーティングすることを理解している限り、next()です。 /register自体はページとして存在しません(コードに記載されているポストアドレスとしてのみ)

私の質問は次のとおりです。 next()の代わりに何かを使って/registerへのリダイレクトを止めることはできますか?私はちょうどその時点でその機能から外れることを何もしないようにサーバーに欲しい。

コード:

app.post('/register', function(req, res, next) { 
    console.log('server registering user'); 
    User.register(new User({username: req.body.username}), req.body.password, function(err) { 
    let tempstring = ""+err; 
    if(tempstring.indexOf("UserExistsError") !== -1){ 
     return next(err); //get out of the function and into normal operation under '/' 
    } 
    }); 
}); 

このトピックでは、私を盗聴されており、私はちょうど些細な何かをmissunderstandかもしれません。

答えて

1

/registerが投稿専用ルートであっても、依然として応答を送信する必要があります。何らかの応答を送信しないと、要求がハングアップし、最終的にブラウザでタイムアウトになります。私はそのようなjsonの応答を送信することをお勧めします。

app.post('/register', function(req, res, next) { 
    console.log('server registering user'); 
    User.register(new User({username: req.body.username}), req.body.password, function(err) { 
    let tempstring = ""+err; 
    if(tempstring.indexOf("UserExistsError") !== -1){ 
     return next(err); //get out of the function and into normal operation under '/' 
    } 
    res.json({message: 'message here'}); 
    }); 
}); 

これは、本体内にいくつかのjsonを付けて200 OK応答を送信します。

このような行の下でリクエストを渡す場合は、次のようにerrオブジェクトのように呼び出す必要があります。これはあなたが達成しようとしているが、それはちょうどあなたの第二の提案は、500からエラーを動かし500

+0

エラーになります合致するルートが存在しない場合は何であれば

app.post('/register', function(req, res, next) { console.log('server registering user'); User.register(new User({username: req.body.username}), req.body.password, function(err) { let tempstring = ""+err; if(tempstring.indexOf("UserExistsError") !== -1){ return next(err); //get out of the function and into normal operation under '/' } //call next without an error next(); }); }); 

は私はわかりません404クライアントが/ registerを見つけることができないためです。だから私は仮想リンク/サブサイトの下に投稿できないのですか?これは1ページのアプリケーションなので、余分なページを作成しないようにしたいと考えました。 – Wandang

+0

それは、それが一致する他のルートがないので、私は起こると予想したものです。私の最初の例では、単一ページアプリケーションでかなり標準的なjsonレスポンスを送信しています。あなたがポストかゲットかのリクエストで、レスポンスが必要です。 "ページ"を作成していないのは、単にapi呼び出しであるからです。 – RedJandal

+0

返信前にres.jsonを使用すると、エラー(私の誤り)を避けることができました。今私はjsonレスポンスをちょっと試してみる必要があります。現時点では、問題自体は修正されているようです(何も接続がなければマークします)。私はangular2のhttpモジュールを使ってpostを使い、次にmapを使って、その関連データをhandlingDataFuncに登録し、errをerrorHandlerFuncに登録しています – Wandang

関連する問題