2017-04-17 6 views
-1

NodeJでコードの残りの部分を実行しないようにするにはどうすればいいでしょうか?(process.exit()が実行される最後の行だと言うアプリケーションではありません)。残りのコードがNodeJsを実行するのを止めるには?

通常のjavascriptではexit()がありますが、それはnodejsでは動作しません。以下は

は状況です:

connection.query(sql, [req.session.sessionUserPackagePassword] , function(err, rows, fields) { 
    if (!err) { 
    var userFound = false; 
    for(var i=0; i< rows.length; i++) { 
     // Make the comparaison case insensitive 
     if ((rows[i].deliveredToUser).toLowerCase() == `no`) { 
     userFound = true; 
     console.log(userFound); 
     [...] 
    } 
} 
if (!userFound) { 
    res.render('pickup/errorAlreadyDelivered', {}); 
    // exit here 
} 

console.log(userFound); 

// If the query fails to execute 
} else { 
    console.log('Error while performing Query.'); 
    res.render('errorConnection', {}); 
} 
}); 
connection.end(); 




    // Update the query to say the box has been delivered to user and specify time 



// Establish the connection 
[...] 


    res.render('pickup/openPackageClose', { 
      title: '', 
      helpButtonURL: '/help/help-dropPackage', 
      helpButtonTitle: 'Help' 


     }); 



    }); 

それがうまくいくかもしれないように、この条件が満たされたとき基本的に、私は

if (!userFound) { 
     res.render('pickup/errorAlreadyDelivered', {}); 
     // exit here 
} 
+0

ブロックの実行を停止するには、breakを使用します。 –

+0

実行しないようにするコードをelseブロックの中に置きます。 –

+0

'connection.end()'を呼び出さずに終了してもよろしいですか? –

答えて

1

connection.end();を実行しない残りのコードをしたいと思い、その後return;はそうあなたのために。

+0

これはあなたがおそらくそうであると思われるコールバック関数にいることを前提としています。 –

+0

はコードの残りの部分を返しません。問題は、下に別のres.renderがあり、そのif文がトリガーすると、最後のレンダリングがレンダリングされ、複数のヘッダーを送信できないというコンソール上のエラーが表示されることです。 – John

+0

私はそれをより明確にしようとするためのコードを更新しました – John

1

私の他の回答に対するあなたのコメントに基づいて、あなたのプログラム構造が私がそれと思ったものではないように思えます。これはうまくいくはずです:

connection.query(sql, [req.session.sessionUserPackagePassword] , function(err, rows, fields) { 
    if (!err) { 
    var userFound = false; 
    for(var i=0; i< rows.length; i++) { 
     // Make the comparaison case insensitive 
     if ((rows[i].deliveredToUser).toLowerCase() == `no`) { 
     userFound = true; 
     console.log(userFound); 
     [...] 
    } 
} 

if (!userFound) { 
    res.render('pickup/errorAlreadyDelivered', {}); 
    connection.end(); 
} else { 
    console.log(userFound); 
    console.log('Error while performing Query.'); 
    res.render('errorConnection', {}); 
    connection.end(); 
} 
+0

これはあなたが起こそうとしていることですか?このコードを読むと、ロジックに問題があると思います。 –

+0

コードをインデントして私の最初の投稿で更新を提供してください – John

+0

更新のおかげで、私のオペレーションの更新コードを見れば、接続の最後の下にコードがあるので、このようなelse条件を正確に追加できます。ここで問題は、次の別のレンダリングです。 – John

関連する問題