2017-03-20 59 views
0

這顆流星服務器代碼存儲性能createdAt: Date.now()期待數量是劃時代的時間,但是當我查看蒙戈外殼文件,我得到"ISODate(\"2016-12-25T22:31:09.553Z\")"Date.now()未在MongoDB中

UsageCol.before.insert(function (userId, doc) { 
    doc.userId = userId; 
    doc.createdAt = Date.now(); 
    doc.period = new Date(doc.createdAt).getMonth() + 1 + '' + new Date(doc.createdAt).getFullYear(); 
}); 
一些

然後,我想改變日期,等等蒙戈貝殼我所做的:

db.users.update({'emails.0.address':'[email protected]'},{$set:{createdAt:'ISODate("2017-02-25T22:31:09.553Z")'}}) 

但現在我得到:

Exception while invoking method 'myMethod' TypeError: accMills.getMonth is not a function

let accMills = Meteor.user().createdAt; 
let freeTime = accMills.setMonth(accMills.getMonth()); 

回答

2

如果設置爲createdAtDate.now()是不會被設置爲Date對象,但作爲一個數字,以毫秒爲單位的Unix時間戳。所以accMills.getMonth()就像1490048577615.getMonth():它沒有意義。相反,你應該做的new Date(accMills).getMonth()

如果你想保存日期對象,你應該設置createdAtnew Date()

UsageCol.before.insert(function (userId, doc) { 
    doc.userId = userId; 
    doc.createdAt = new Date(); 
    doc.period = doc.createdAt.getMonth() + 1 + '' + doc.createdAt.getFullYear(); 
}); 
+0

。爲什麼然後mongo報告'ISODate(\「2016-12-25T22:31:09.553Z \」)'而不是數字1488330383515 –

+0

是的,我想知道。你能分享代碼,瞭解你如何創建記錄嗎? – Guig

+0

這是用戶收藏。我沒有創建屬性createdAt,它是在我猜的內置的。 –

0

試試這個doc.createdAt = new Date().getTime()它將返回日期爲紀元時間格式

更新:作爲@RobG註釋 Date.now()和new Date()。getTime()是相同的。

如果'Date.now()在before.insert鉤使用`試試這個,而不是上一套$set:{createdAt:new Date('ISODate("2017-02-25T22:31:09.553Z")')}

和N你的空閒時間變量let freeTime = new Date(accMills).getMonth();

+0

'新Date()。getTime()'相當於'Date.now()'。 – RobG

+0

@RobG哦,是的,我的壞。編輯我的答案 –