#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. это действительно сработало, спасибо. Я не могу поверить, что я пропустил что-то подобное