2017-12-27 1283 views
0

创建从MongoDB db读取的节点REST API(我在本例中使用Mongodb-native,而不是Mongoose)时,我遇到了一个问题。我试图在我从本地文件读取的给定时间戳后查询所有结果。然后我得到最上面的事件的时间戳,并将其保存到文件中(目标是这个方法应该返回最后一个查询中的最新事件,如果有意义的话)。MongoDB Native Node.js问题

这是到目前为止我的代码:

router.get("/latestevent", function(req, res, next) { 
    db.collection("events", function(err, collection){ 
      var contents = new Date(fs2.readFileSync('latesttimeevent','utf8')).toISOString(); 
      console.log("Newest previous date is: " + contents); 
      var date = String(contents); 
      collection.find({event: {$regex: '00FF0004'},eventtime: {'$gte':new Date(date)}}).sort({$natural:-1}).limit(10).toArray(function(err, data) 
      { 
        fs.writeFile("latesttimeevent",data[0].eventtime, function(err) 
        { 
          if(err) 
          { 
            return console.log(err); 
          } 
          console.log("Cell File was saved"); 
        }); 
        res.json(data); 
      }) 
    }); 
}); 

CONSOLE.LOG( “最新先前的日期是:” +内容)返回这个格式的日期:2017-12-27T18:57:37.000Z。当我将该日期插入函数new Date(date) - > new Date(“2017-12-27T18:57:37.000Z”)时,我能够在进行REST调用时成功获取信息。然而,现在,当试图使用Postman进行GET调用时,它只是缓冲区(有时它会在第一次尝试时工作,但之后会缓冲)。

任何想法我在做什么错在这里?我试图用新的日期(...)很多与不同的字符串选项,删除新的日期,添加toISOString()等,但没有成功。

谢谢!

回答

0

我认为重点是在客户端,而不是服务器。我不熟悉的邮递员,但我的观点是,你需要设置高速缓存控制(为您的客户获取请求头)为no-cache,例如:

Cache-Control: no-cache, no-store, must-revalidate 

你也可以尝试设置的max-age缓存头PARAM以及,

max-age=0 

(详见:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control