ノードを使用して安らかなAPIを作成し、応答を送信中に混乱しました。以下は 応答を送信し、nodejsのコードのさらなる実行を停止します
はサンプルコードです:私は失敗したモバイル検証応答時のリターンを指定していないとき、それは、コードのさらなる実行を継続して印刷コンソールで「データが定義されていない」は無効なモバイルメッセージJSONがあるrouter.post('/', function(req, res) {
var mobileRegex=/^\d{10}$/;
if (!mobileRegex.test(req.body.mobile)){
res.json({status:'success',type:false,msg:'Invalid Mobile'});
// I dont want further execution of code after this but still it continues and prints data not defined
// OR
return res.json({status:'success',type:false,msg:'Invalid Mobile'});
//but works if I specify return before it
}
var data={...};
signupModel.createUser(data,function(err,result){
if(err)
{
res.json({status:'success',type:false,msg:'....'});
}
else
{
res.json({status:'success',type:false,id:'....'});
}
});
エラートレースなしでクライアントに適切に送信します。
私は混乱しています。nodejsにapiを作成するときに従うべき正しい方法は何ですか?私の懸念は、応答が送信されるとさらに処理されるべきではありません。 また、リターンが終了した場合、すべてのケースでクライアントにjson応答を送信すると、どこでもリターンを使用する必要があります。
私はNodejs difference between 'res.json(..)' and 'return res.json(..)'スレッドが、ミドルウェアとの関係を見ていたが、私の場合、あなたはres.json()
後return
ステートメントを追加することができますどれ
他のミドルウェアの実行を停止したい場所でリターンを使用してください!そして、res.send()の後に呼び出す必要はありません。単に 'return res.send()'が機能するだけです! – Ali