Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用mongodb时间戳缓存标头_Javascript_Node.js_Mongodb_Caching - Fatal编程技术网

Javascript 使用mongodb时间戳缓存标头

Javascript 使用mongodb时间戳缓存标头,javascript,node.js,mongodb,caching,Javascript,Node.js,Mongodb,Caching,使用mongodb作为数据存储测试缓存时发现此问题。上次修改的日期是正确的,但根据其规格,它不包括毫秒,因此当node JS controller尝试比较它们时,它们是不同的: 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 14250285

使用mongodb作为数据存储测试缓存时发现此问题。上次修改的日期是正确的,但根据其规格,它不包括毫秒,因此当node JS controller尝试比较它们时,它们是不同的:

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

这似乎能起到作用:

 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()) {

在进行比较之前,您是否可以控制mongoDB时间值,如果可以,则将3位数字重置为零,然后进行比较。拥有控制权,寻找处理此情况的好方法,以便处理时间,即将最后一位数字替换为000。try(long)((double)time/1000)*1000认为这是更干净的var lastModDate=新日期(更新于);lastModDate.setmillizes('000');if(reqModDate.getTime()>=lastModDate.getTime()){…}