Замораживание даты и времени ExpressJS

#node.js #express

#node.js #экспресс

Вопрос:

Я пытался создать планировщик, который запускается каждую полночь, используя node-schedule. Но планировщик никогда не запускается, поэтому я написал функцию для получения даты и времени с сервера с конечной точки, чтобы проверить текущую дату и время

 baseUrl:port/v1/service/getDate
  

я использовал dateformat, ответ, который я получаю, должен выглядеть так:

 {
  date1: yyyy-MM-dd (current date),
  date2: yyyy-MM-dd HH:mm:ss (current date with time),
  date3: yyyy-MM-ddTHH:mm:ss 0000 (timestamp with timezone)
}
  

Но вместо этого всякий раз, когда я несколько раз попадал в конечную точку, я получал тот же результат, а не текущее время. Я думаю, что это проблема с моим фрагментом кода, но, похоже, я не знаю, в чем проблема.

Мой фрагмент кода:

 const newDate =  dateFormat(now, "yyyy-mm-dd")
const newDateTime = dateFormat(now, "yyyy-mm-dd HH:MM:ss")
const timestamp = dateFormat(now, "isoDateTime")

router.route('/getDate').get((req,res) => {
  res.json({
    date1: newDate,
    date2: newDateTime,
    date3: timestamp,
  })
})
  

Комментарии:

1. Попробуйте реализовать его без npm пакетов; возможно, это проблема с их стороны

Ответ №1:

Потому now что не изменяется в самом маршруте. Я полагаю, вы сохранили его как

 const now = new Date()
  

и это так.
Вам необходимо запросить и отформатировать текущую дату непосредственно перед res.json запуском маршрута:

 router.route('/getDate').get((req,res) => {
  const now = new Date()
  const newDate =  dateFormat(now, "yyyy-mm-dd")
  const newDateTime = dateFormat(now, "yyyy-mm-dd HH:MM:ss")
  const timestamp = dateFormat(now, "isoDateTime")

  res.json({
    date1: newDate,
    date2: newDateTime,
    date3: timestamp,
  })
})
  

Комментарии:

1. это действительно сработало, спасибо. Я не могу поверить, что я пропустил что-то подобное