私はnodejsアプリケーションを作成しています。これはデータベースとやりとりする(sequelizeを使用して)。さて、私の要件は、db接続で何らかの問題が発生したときに警告(snmpトラップ)を発生させることです。 。NodeJS - AOPはDB例外の共通アクションを実行します
私は(.then使用してこれを達成することができます)キャッチ()以下のように:
db.myModel.find(...)
.then(function() { //do some processing })
.catch (function(e) {
// TODO: write code to send an alert
// ...
})
上記のコードの問題は、私はDBをやっているところはどこでも私は、コード全体を数回繰り返す必要があるということです訴訟
JavaScriptのAOP(Aspect Oriented Programming)のような簡単な方法を探していました。実際に私はライブラリ(hereとhere)のカップルを見つけましたが、流れがキャッチブロックに行くなら、アドバイスを実行する方法は見つかりませんでした。
Javaの場合、例外pointcutをキャッチする機能がありました。私はここに同様の機能があるのだろうかと思います。
あなたはこれをオーバーエンジニアリングしているのでしょうか?より透過的な方法は、 '' .catch''ブロックが呼び出す関数をエクスポートするモジュールを書くことだけでしょうか? '' .catch(myDBErrorHandler) ''と似ています。 Expressを使用してミドルウェアを定義できる場合は、Sequelize Errorのインスタンスであるすべてのエラーを処理し、 '' .catch(next) ''だけを持つミドルウェアを定義できます。 私はJava開発者でしたが、オーバーエンジニアリングはあなたの人生の残りの部分であなたに続いていくことは簡単です。 – tiblu