2017-12-27 1304 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