私の node.js スクリプトは、データベース 1 のテーブルから行を読み取り、いくつかの処理を行い、その行をデータベース 2 に書き込みます。
すべてが完了したら、スクリプトを終了する必要があります。
すべてが完了したかどうかを確認し、ノードを終了するにはどうすればよいですか?
次のようなコールバック関数がある場合:
function exit_node() {
process.exit();
}
(編集: その間、process.exit() を db.close() に置き換えることもできることが明らかになりました-しかし、これはそこに何を入れるかという問題ではありません。問題は、正確にいつこれを行うかです。このコールバックを実行する方法と場所。)
しかし、どこかに取り付けるのは簡単ではありません。処理と書き込みがまだ発生する必要があるため、db1 からの最後の読み取りが正しくありません。
最後の書き込みの後に接続する必要があるため、db2 への書き込みに接続するのは簡単ではありませんが、各書き込みは独立しており、最後の書き込みかどうかはわかりません。
理論的には、最後の書き込みが終了しても、その前の別の書き込みがまだ実行中である可能性があります。
編集:申し訳ありませんが、質問の説明が完全ではなく、おそらく混乱していることがわかりますが、一部の人はまだ理解しており、以下に適切な回答があります. コメントと回答を読み続けてください。全体像がわかるはずです。
編集:「ブロッキング」コントローラーメカニズムを考えることができました。スクリプトのさまざまな部分は、開いている「ジョブ」ごとにブロッカーをコントローラーに追加し、ジョブの終了後にそれらを解放します。コントローラーは、ボッカーがなくなるとスクリプトを終了します。多分非同期が役立つかもしれません: https://github.com/caolan/async
また、これがコードとロジックを不当に爆破するのではないかと心配しています。