1

MongooseスキーマにDateフィールドがあり、これを従来の日付に変換して表示したいと思います。prettifyDateこれを行うための明白な場所は、あちこちで関数を呼び出さないようにするためのゲッターです。Dateマングースが私のポストゲッター文字列を取得してコンストラクターに渡しているように見えるため、これは機能しません。

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

私のスキーマでは次のようになります。

Cast to date failed for value "foo"

ドキュメントをフェッチするとき。

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

4

3 に答える 3

4

受け入れられた答えは大丈夫ですが、これには仮想を使用する必要があると思います。彼らは特にこのようなもののために作られました。

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

このようにして、スキーマに余分なフィールドを配置しません (仮想としてのみ使用されます)。

于 2012-09-17T09:40:35.500 に答える
0

Mongoose (3.8) の現在のバージョンでは、正常に動作します。

date: {type: Date, get: function(v) { return 'foo'; }}   // yields 'foo' without errors
于 2014-09-12T20:16:16.933 に答える
-2

私はまったく同じことに取り組んでおり、回避策としてこれを考え出しました。

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

次に、prettifyDate関数リファレンスで:this.date

これが最善の方法である可能性は低いですが、機能します。.toISOString()を使用して日付を変換し、関数で生のISO日付を処理することを忘れないでください。

于 2012-05-01T22:42:11.730 に答える