Javascript Date.now()不是Mongodb中的数字
此Meteor服务器代码存储一个属性Javascript Date.now()不是Mongodb中的数字,javascript,mongodb,Javascript,Mongodb,此Meteor服务器代码存储一个属性createdAt:Date.now()需要一个纪元时间的数字,但当我在mongo shell中查看文档时,我得到了“ISODate(\“2016-12-25T22:31:09.553Z\”) UsageCol.before.insert(函数(userId,doc){ doc.userId=userId; doc.createdAt=Date.now(); doc.period=新日期(doc.createdAt).getMonth()+1+''+新日期(d
createdAt:Date.now()
需要一个纪元时间的数字,但当我在mongo shell中查看文档时,我得到了“ISODate(\“2016-12-25T22:31:09.553Z\”)
UsageCol.before.insert(函数(userId,doc){
doc.userId=userId;
doc.createdAt=Date.now();
doc.period=新日期(doc.createdAt).getMonth()+1+''+新日期(doc.createdAt.getFullYear();
});
然后,我想更改日期,所以在mongo shell上我做了:
db.users.update({'emails.0.address':'abc@zyx.com'},{$set:{createdAt:'ISODate("2017-02-25T22:31:09.553Z")'}})
但现在我明白了:
调用方法“myMethod”TypeError时发生异常:accMills.getMonth不是函数
如果将
createdAt
设置为Date.now()
则不会将其设置为日期对象,而是将其设置为以毫秒为单位的unix时间戳的数字。所以accMills.getMonth()
就像1490048577615.getMonth()
:它没有意义。相反,您应该执行newdate(accMills).getMonth()
如果要保存日期对象,应将createdAt
设置为new date()
:
如果将
createdAt
设置为Date.now()
则不会将其设置为日期对象,而是将其设置为以毫秒为单位的unix时间戳的数字。所以accMills.getMonth()
就像1490048577615.getMonth()
:它没有意义。相反,您应该执行newdate(accMills).getMonth()
如果要保存日期对象,应将createdAt
设置为new date()
:
试试这个
doc.createdAt=new Date().getTime()
它会将日期返回到历元时间格式
更新:
as@RobG comment Date.now()和new Date().getTime()相同
在set$set:{createdAt:new Date('ISODate(“2017-02-25T22:31:09.553Z”))上尝试此操作。
n您的freetime变量
let freetime=new Date(accMills).getMonth()
试试这个doc.createdAt=new Date().getTime()
它会将日期返回到历元时间格式
更新:
as@RobG comment Date.now()和new Date().getTime()相同
在set$set:{createdAt:new Date('ISODate(“2017-02-25T22:31:09.553Z”))上尝试此操作。
n您的freetime变量
let freetime=new Date(accMills).getMonth()
new Date().getTime()
相当于Date.now()
new Date().getTime()
相当于Date.now()
。如果在before.insert钩子中使用了Date.now()
。那么,为什么mongo报告的是ISODate(\'2016-12-25T22:31:09.553Z\”)而不是1488330383515Yeah,我想知道。你能分享你如何创建记录的代码吗?这是用户集合。我没有创建属性createdAt,我想它是内置的。从您的问题中不清楚您使用的是users
集合。不确定它是否是最佳参考:但它看起来像meteor正在使用new Date()
如果Date.now()在before.insert钩子中使用。那么,为什么mongo报告的是ISODate(\'2016-12-25T22:31:09.553Z\”)
而不是1488330383515Yeah,我想知道。你能分享你如何创建记录的代码吗?这是用户集合。我没有创建属性createdAt,我想它是内置的。从您的问题中不清楚您使用的是users
集合。不确定它是否是最佳参考:但它看起来像meteor正在使用newdate()
let accMills = Meteor.user().createdAt;
let freeTime = accMills.setMonth(accMills.getMonth());
UsageCol.before.insert(function (userId, doc) {
doc.userId = userId;
doc.createdAt = new Date();
doc.period = doc.createdAt.getMonth() + 1 + '' + doc.createdAt.getFullYear();
});