Этот код сервера Meteor хранит свойство createdAt: Date.now(), ожидающее число, которое является временем эпохи, но когда я просматриваю документ в оболочке mongo, я получаю "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();
});

Затем я хотел изменить дату, поэтому на оболочке Монго я сделал:

db.users.update({'emails.0.address':'abc@zyx.com'},{$set:{createdAt:'ISODate("2017-02-25T22:31:09.553Z")'}})

Но теперь я получаю:

Исключительная ситуация при вызове метода myMethod TypeError: accMills.getMonth не является функцией

let accMills = Meteor.user().createdAt;
let freeTime = accMills.setMonth(accMills.getMonth());
0
Fred J. 21 Мар 2017 в 01:13

2 ответа

Лучший ответ

Если вы установите 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();
});
2
Guig 20 Мар 2017 в 22:24

Попробуйте doc.createdAt = new Date().getTime(), он вернет дату в формат времени эпохи

ОБНОВЛЕНИЕ: как @RobG комментарий Date.now () и новый Date (). GetTime () одинаковы.

Попробуйте это вместо этого на множестве $set:{createdAt:new Date('ISODate("2017-02-25T22:31:09.553Z")')}

И в вашей свободной переменной времени let freeTime = new Date(accMills).getMonth();

0
per.eight 20 Мар 2017 в 22:47