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