Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Date.now()不是Mongodb中的数字_Javascript_Mongodb - Fatal编程技术网

Javascript Date.now()不是Mongodb中的数字

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

此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+''+新日期(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();
});