2015-02-27 2 views
0

Обнаружена эта проблема при тестировании кеширования с использованием mongodb в качестве нашего хранилища данных. Дата последнего изменения в настоящее время правильно, но его спецификация не включает миллисекунды, таким образом, когда контроллер узла JS пытается сравнить их, они разные:Кэширование заголовка с меткой времени mongodb

Fri Feb 27 2015 09:15:00 GMT+0000 (GMT) - Mongo DB date 
Fri Feb 27 2015 09:15:00 GMT+0000 (GMT) - if-modified-since 

значение контроллера:

1425028500987 - Mongo DB date 
1425028500000 - if-modified-since 

Как вы можете видеть, mongodb включает миллисекунды. У кого-нибудь хороший способ очистить дату, чтобы сбросить миллисекунды?

Спасибо.

J

+0

У Вас есть контроль над значением времени MongoDB прежде чем вы делаете сравнение, если это так, то сбросить 3 цифры к нулю, то сравнения. – faljbour

+0

Имейте управление, ища хороший способ справиться с этим сценарием, чтобы время было занято, т.е. заменяя последние цифры на 000. – user1859465

+0

попробуйте (длинный) (((удвоенное) время/1000) * 1000) – faljbour

ответ

0

Это, кажется, чтобы сделать работу:

var reqModDate = new Date(req.header(IF_MODIFIED_SINCE)); 
var lastModDate = new Date(updated_at); 
lastModDate.setMilliseconds('000'); 

// if-modified-since header is only good to the second while mongo is to the millisecond 
if (reqModDate.getTime() >= lastModDate.getTime()) { 
Смежные вопросы