gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 03:54:08 26 4
gpt4 key购买 nike

此 Meteor 服务器代码存储一个属性 createdAt: Date.now() ,期望一个数字,该数字是纪元时间,但是当我在 mongo shell 中查看文档时,我得到 "ISODate (\"2016-12-25T22:31:09.553Z\")"

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();
});

然后,我想更改日期,所以在 mongo shell 上我做了:

db.users.update({'emails.0.address':'abc@zyx.com'},{$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());

最佳答案

如果将createdAt设置为Date.now(),它不会被设置为Date对象,而是设置为unix时间戳(以毫秒为单位)的数字。因此 accMills.getMonth() 类似于 1490048577615.getMonth():它没有意义。相反,您应该执行 new Date(accMills).getMonth()

如果你想保存一个日期对象,你应该将createdAt设置为new Date():

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

关于javascript - Date.now() 不是 Mongodb 中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914938/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com