2012-05-01 1 views
1

私はMongooseスキーマ内にDateフィールドを持っています。これは表示のための従来の日付に変換したいのです。これを行うための明白な場所はゲッターの中で、prettifyDate関数を全面的に呼び出すことを避けることです。マングースは私のポストゲッター文字列を取り、Dateコンストラクタにそれを与えているようですので、これは、動作しません:私のスキーマ内getterで変換した後、mongooseのDateへのキャストを抑制する

... 
, date: {type: Date, get: function() { return 'foo'; }} 
... 

は私を与える:

Cast to date failed for value "foo" 

私はドキュメントをフェッチ。

このキャストを抑制することは可能ですか?Date?私が行方不明になっているより良い方法はありますか?

答えて

-1

私はちょうど同じことに取り組んできましたし、周りの仕事としてこれが出ている:prettifyDate関数リファレンスで次に

, date: {type: Date} 
, formatted_date: {type : String, get : prettifyDate} 

: this.date

それはそうですこれが最良の方法ですが、それは機能します。 .toISOString()を使用して日付を変換し、関数内の生のISO日付で作業することを忘れないでください。

+0

ああ、素敵です - それはかなりきれいな回避策です、私はそれを取るでしょう。ありがとう。 – jimw

3

回答はOKですが、これには仮想を使用する必要があります。彼らは特にこのようなもののために作られました。

schema.virtual('formatted_date').get(function() { 
    // Code for prettifying where you refer to this.date 
    return prettifiedDate; 
}); 

あなたはマングースの現在のバージョンでは(唯一の仮想として使用されている)自分のスキーマに

0

を追加フィールドを入れていないこの方法で(3.8)は、それが正常に動作します:

date: {type: Date, get: function(v) { return 'foo'; }} // yields 'foo' without errors 
関連する問題