页面偶尔出现查询/页面刷新错误,ejs出现类型报错/方法报错

来源:互联网 发布:韩国人 日本人 知乎 编辑:程序博客网 时间:2024/05/16 12:56

   在做项目的时候碰到一个坑。在此记录下来。

    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进行时间数据输出就没问题了。

0 0
原创粉丝点击