2013-01-11 8 views
10

マングースのインスタンスメソッドから静的メソッドにアクセスするにはどうすればいいですか?mongooseのインスタンスメソッドから静的メソッドにアクセスする方法は?

私はJobというジョブモデルを持っています。インスタンスメソッドjob.startから、静的メソッドJob.someStatic()を呼び出したいとします。インスタンスメソッドの "this"からJobへの参照を取得するにはどうすればよいですか?

おかげ

答えて

21

私は(ちょうどJob.someStatic()を呼び出すことなく)一般的にそれを行うために見つけた唯一の方法は次のとおりです。

this.model(this.constructor.modelName).someStatic(); 

更新@ numbers1311407に感謝:

私はドン」それがいつもそうだったかどうかは知っていますが、少なくともMongoose 3.6.11では、これを短縮することができます:

this.constructor.someStatic(); 

マングース4.xのアップデート

これはまだ4.4.12で動作します。

+0

ああ、それは醜いです...しかし、ここに私がやっていることがあります:私がモデルを作成するとき、私はモデル自体にメソッドを設定しました。 (Job.abc = function(){})これは静的だと思います。インスタンスに関数を渡す方法は他にありますか? –

+0

なぜ、その関数をスキーマの 'statics'に追加していませんか? – JohnnyHK

+0

私はその静的にアクセスできない。しかし、あなたの方法はあまりにも機能します。私はより短いsintaxを望んでいますが、私はそれと一緒に暮らすことができます。あなたがもっとコンパクトなものに気づくなら、私は聞いてうれしいです –

関連する問題