2017-08-07 6 views
0

イムを働いていません:。マングース:瞬間()フォーマットは、次のようにマングーススキーマを持つ

createdOn: { 
    type: String, 
    //default: Date.now, 
    default: moment(new Date(Date.now())).format('MMM Do YY') //npm install moment --save # npm 
}, 
updatedOn: { 
    type: String, 
    //default: Date.now 
    default: moment(new Date(Date.now())).format('MMM Do YY') 
} 

がUPDATE:

型を文字列に変更した後、

私が手:

金7月28日2017 14:43:40 GMT + 0530(IST)

時間とSMTを削除する方法。

は、私は上記の私のスキーマ内のノードJSのモーメントパッケージ(http://momentjs.com/

いただきまし間違っをインストールのみ金2017年7月28日

を維持する必要があります。

は私が手

MongooseError: Cast to date failed for value "Aug 7th 17" at path "updatedOn"

message: 'Cast to date failed for value "Aug 7th 17" at path "updatedOn"', name: 'CastError', stringValue: '"Aug 7th 17"', kind: 'date', value: 'Aug 7th 17', path: 'updatedOn', reason: undefined }

+0

mongooseとMongoが知っている限り、日付形式としてISO-dateを使用しています。 "Aug 7th 17"は無効です。あなたが絶対にそれを保存したい場合は、日付の代わりに型を "String"に変更する必要があります。より良い解決策は、データベースからデータを抜き取った後で、おそらく瞬時にフォーマットを変更することです。 – tomtom

+3

"8月7日17"のように保存したい場合、 'type'は' String'でなければなりません。 '8月7日17 "は' date type'ではない文字列です –

答えて

0

二重のデフォルト割り当てが間違っています。

default: default: moment(new Date(Date.now())).format('MMM Do YY') 

より適切な方法として、書式設定された日付文字列ではなく、UNIXタイムスタンプを使用することを検討する必要があります。タイムスタンプはにデータベースの統計情報を簡単に追跡できるようにします。

だから、あなただけ使用できます。

Date.now() // returns a UNIX timestamp 

をmoment.jsではUNIXタイムスタンプ:

moment().unix() 

を何らかの理由であなたは常にだけで行うことができ、文字列の形式でタイムスタンプを必要とする場合:

moment().unix() + '' 
+0

double defaultは間違っていました – phyme

関連する問題