2017-08-07 68 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:

改變類型爲字符串後,

我得到:

Fri Jul 28 2017 14:43:40 GMT + 0530(IST)

如何刪除時間和SMT。

我只需要保留星期五2017年7月28日

我安裝的節點JS的瞬間包(http://momentjs.com/

請告訴我錯在我的架構之上:

我得到

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

據我所知,貓鼬和Mongo使用ISO日期作爲日期格式。因此「8月7日17」無效。如果你絕對想保存它,你必須將類型改爲「String」而不是日期。更好的解決方案可能是在您從數據庫中採集數據後使用時刻更改格式。 – tomtom

+3

如果你想保存像「8月7日17」那麼你的'type'應該是'字符串',因爲''8月7日17「'是一個字符串不是'日期類型' –

回答

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

雙重默認是錯誤的,已更新 – phyme