2016-08-24 1 views
0

現在、私はブログアプリをやっていますが、私は特定のステータスをリダイレクト/送信してそれに応じて行動する方法を見つけるのに苦労しています。特定のステータスのexpressjsでリダイレクトする方法は?

例えば、私はmongooseを使ってmongodbにデータを保存する機能を持っています。次に、エラーが発生しなかった場合200の状態。

newArticle.save(function(err){ 
    if (err) throw err; 
    else { 
    res.sendStatus(200); 
    } 
}); 

私の記事が正常であれば、私は、(私は私の意見とルートと私のAJAX要求のたSuperAgent反応使用しています)、この状態を「フェッチ」、次に何かを、例えばすることができるようにしたいですページに特定のコンポーネントをロードして、h1というメッセージが表示されるようにします。

これは最初の部分です。

2番目の部分は404エラーや500エラーのすべてに対して、たとえばmyblog.com - > myblog.com/somethingからリダイレクトするように指定してから、反応ルータで単純に基本的な404ページをレンダリングしますどのようにそれを行うか分からない、私は多くを探していて何かを見つけることができなかった...

そして、私はHTTPと基本的な知識が不足しているので、私が知りたいと思っている良い記事/本をお勧めします。

答えて

1

最初の部分です。あなたがフラックスやレキシックスのような状態やデータライブラリを使用しているかどうかに応じて、そうでなければ、あなたのサーバーからのHTTPステータスをajaxレスポンスに持たせることができます。これを使用して、setStateを使用して、isArticleSaveSucessfulなどの状態プロパティを設定できます。そのキーが真であれば、成功メッセージコンポーネントをレンダリングします。

第2部。あなたが意図したより良いユーザーエクスペリエンスのために、URLはまだユーザーが意図したもの、つまりblog.com/bad-article-nameでなければなりませんが、ページは404をレンダリングする必要があります。応答が戻ってきますので、それに応じてsetstateを実行してください。articleNotFoundのようになります。レンダー機能でifの状態をチェックし、それが真であればエラーコンポーネントをレンダリングします。

+0

こんにちはダン、私のexpressjsの反応のブログのアプリで私のルータとして反応ルータを使用しています私はエクスプレスで404ページを監視することはできませんと思っていますjsは反応ルータが自分のルートしか管理していないため、コンポーネントがルータにリンクされているかどうかを教えてくれるので、未知のルートのデフォルトコンポーネントをスローするビルトイン機能があるかどうか疑問に思っていましたあなたは私の英語を残念に思っています。 – MaieonBrix

+0

React-routeは、 'path = '*''で見つからないページをレンダリングするのに使うことができるデフォルトルートを表示する能力を持っていますが、あなたは説明しています。あなたのルートがパターンと一致しない場合にのみ使用されます。あなたのシナリオでは、ブログのURLはあなたのルートと一致しますが、特定のブログエントリは見つかりませんでした。これは、技術的には、仕事の反応ルータ部分を満足させました。サーバールーティングの背後にあるロジックは、クライアントサイドルーティングとは異なります。これを除いて、あなたのルート上にnotFoundコンポーネントを表示することは、それを行うためのより「反応する」方法です。 – Dan

関連する問題