您的位置:首页 > Web前端 > JavaScript

解决ThinkJS项目开发中页面跳转报错问题

2016-11-14 01:05 477 查看
很多时候在我们查询某一项数据时,在数据过多的时候我们会选择分页展示,但是很多时候会发现在进行页面跳转时会出现报错,报错内容是数据库查询条件为空。



问题分析

其实问题很简单,报错的原因是因为代码获取到的查询条件为空,因为查询条件是由上一页面通过Form表单提交过来的数据,然后我们通过
this.post
方法获得值;但是当我们进行页面跳转的时候其实就是刷新了一下当前的页面,并不会有页面再次提交到数据到当前页面来,因此自然无法获取到查询条件,报错也就可以理解了。

解决思路

如果页面跳转的时候我们无法再次获取到值,那么我们就可以考虑当有页面通过Form表单提交数据到当前页面时,我们在查询数据的同时把数据存储起来;当跳转页面时,我们可以把存储的数据取出来继续进行数据查询;当有页面再次通过Form表单提交数据到当前页面时,我们查询数据的同时更新下存储的数据,这样便可以解决我们所遇到的问题了。

解决方案

问题关键所在无非就是我们如何进行数据存储,在这里我们可以使用
ThinkJS
提供的
CACHE
存储,存储我们所需要的数据。

Cache配置代码

common
模块
config
文件中创建
cache.js
,代码如下:

'use strict';
/**
* Created by arter on 2016/11/14.
*/
export default {
type: "file", //缓存类型
timeout: 6 * 3600, //失效时间,单位:秒
adapter: { //不同 adapter 下的配置
file: {
path: think.RUNTIME_PATH + "/cache", //缓存文件的根目录
path_depth: 2, //缓存文件生成子目录的深度
file_ext: ".json" //缓存文件的扩展名
},
redis: {
prefix: "thinkjs_"
},
memcache: {
prefix: "thinkjs_"
}
}
};


调用Cache方法

示例代码:

let taoCache = null;

if(!think.isEmpty(formVal)){
this.assign('formVal',formVal);
this.cache('formVal',formVal);
}else{
formVal = await this.cache('formVal');
}


保存代码之后我们返回页面从新测试便会发现问题已经完美解决。

以上便是问题的解决方法,如若查看更多文章请点击进入我的个人博客
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ThinkJS Node
相关文章推荐