頁面偶爾出現查詢/頁面刷新錯誤,ejs出現類型報錯/方法報錯

   在做項目的時候碰到一個坑。在此記錄下來。

    nodejs項目,使用的是LRU-cache 。前端使用的是ejs模板引擎

    在頁面上點擊按鈕,進行查詢的時候,刷新頁面,顯示查詢結果(結果內含有一個日期數據)。但是發現有一定機率刷新成功,一定機率報錯。

錯誤信息爲date不存在getFullYear()方法。

覺得很奇怪,因爲查看數據的明明是Date類型。

後來乾脆將 typeof date 輸出到當前頁面上。連續刷新頁面。發現打印信息第一次是object,以後都是string。也就是說第一次查詢的時候是object類型,以後都是string類型。

由此推測出是緩存出了問題。

在第一次查詢的時候,直接從數據庫拿數據,所以類型沒問題。但是在第一次取得數據的時候,會將查詢結果以字符串形式緩存。第二次查詢的時候,直接從緩存讀數據,所以頁面會報錯。因爲第二次已經不是Date格式了,不存在getFullYear()方法。


解決辦法:

在頁面上使用 new Date()對所取得的數據進行轉換。這樣就不會報錯了。

<span style="font-size:18px;"><% data.date-change = new Date(data.date)%></span>
 接下來使用data.data-change進行時間數據輸出就沒問題了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章