Express.jsとMongooseを使用して同僚と REST API を開発しています。
一部の MongooseではModel
methods
、現在リクエストを実行している認証済みユーザーなど、追加のコンテキスト情報ソースとしてオブジェクトstatics
が必要です。Express.js
Request
現在行っていることは、の関数のプロトタイピングによってのコンテキストに呼び出さcontext
れるカスタム プロパティをアタッチすることです。Model
this
Mongoose
Model
問題は、厄介なバグに遭遇したことで、インスタンスでModel.methods
呼び出された が正常に機能することに気付きました。Model
として実装されている「クラス」でModel.statics
呼び出される の場合、スコープはアプリ全体で共有されます。つまり、同時リクエストがある場合、リクエスト処理で非同期動作がある場合、それらは互いの値をオーバーライドします。.Model
singleton
this.context
今私の質問は次のとおりです。
- and functionsでコンテキストを保持
Express.js
およびMongoose
アクセスするためのベストプラクティスは何ですか?request
Model.statics
Model.methods
もちろん、封じ込めをシミュレートするためのいくつかの可能なハックがあります:
Function.bind()
Model
リクエストコンテキストを追加するすべての関数。-> これは、
Model.statics.a()
内部的に を呼び出す場合Model.statics.b()
、関数に .b()
がないことを意味しますthis.context
。with() {}
オブジェクトでステートメントを使用し、そのスコープ内のrequest
すべての関数を呼び出します。Model
->これはかなり汚れていて遅いでしょう。
vm
標準の Node.js モジュールを使用して、個別のスコープを持つコンテナーを作成します。→(2)と同様、パフォーマンスが大幅に低下します。
何か案は ?前もって感謝します !