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

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

erro

问题分析

其实问题很简单,报错的原因是因为代码获取到的查询条件为空,因为查询条件是由上一页面通过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');
}

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

以上便是问题的解决方法,如若查看更多文章请点击进入我的个人博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值