1***@qq.com
1***@qq.com
  • 发布:2023-10-24 16:32
  • 更新:2023-10-25 11:10
  • 阅读:321

uniCloud.addInterceptor拦截clientDB相关的jql、unicloud-db 组件等等,拿不到请求参数

分类:uniCloud

产品分类: uniCloud/App

示例代码:

uniCloud.addInterceptor('database', {
invoke(args) {

        console.log('测试拦截')  
        console.log(args)  
        // return {param,errMsg:'就是不让你们走'}  
        // param为拦截Api的参数 例 {name: 'functionName', data: {'functionParam1': 1, 'functionParam2': 2}}  
        // 此处返回错误可终止api执行  
    },  
    success(res) {  
        console.log('success测试拦截')  
        console.log(res)  
        // res为callFunction的返回值,此处可以对返回值进行修改  
    },  
    fail(err) {  
        // err为callFunction抛出的错误  
    },  
    complete(res){  
        // complete内res为上面的res或err  
    }  
  })

操作步骤:

1.在APP.VUE中的onLaunch生命周期里, 写上
uniCloud.addInterceptor('database', {
invoke(args) {

        console.log('测试拦截')  
        console.log(args)  
        // return {param,errMsg:'就是不让你们走'}  
        // param为拦截Api的参数 例 {name: 'functionName', data: {'functionParam1': 1, 'functionParam2': 2}}  
        // 此处返回错误可终止api执行  
    },  
    success(res) {  
        console.log('success测试拦截')  
        console.log(res)  
        // res为callFunction的返回值,此处可以对返回值进行修改  
    },  
    fail(err) {  
        // err为callFunction抛出的错误  
    },  
    complete(res){  
        // complete内res为上面的res或err  
    }  
  })  

2.去首页调用db.collection('house-list')等jql语法

3.开始.get()查询结果, addInterceptor拦截器invoke的参数打印为空。 只拿到了success的返回结果。

预期结果:

invoke能拿到请求参数

实际结果:

invoke的参数为undefined

bug描述:

uniapp使用 db.collection('house-list').where({sell: false,city_name:this.cp.name}).limit(100).get() 。 我用了客户端API uniCloud.addInterceptor 拦截database, 目的为了在使用clientDB的时候, 拦截参数额外加上 省市县的地区标识。 结果一直拦截不到, 打印参数为空。 如果这个拦截器无效, 那么整个系统都要额外写参数, bug也会产生一大堆。此bug求解决。

2023-10-24 16:32 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

目前是没有参数的,另外拦截到数据库请求时也不支持进行修改

  • 1***@qq.com (作者)

    好吧, 那我小程序怎么优雅隔离全国各个地区的数据? 本来设想请求的时候, 自动携带城市city字段, 现在的话, 只能每写一个功能, 额外携带城市city参数吗

    2023-10-25 11:15

  • DCloud_uniCloud_WYQ

    回复 1***@qq.com: 只能这样了,自己封个方法比较灵活

    2023-10-25 17:09

要回复问题请先登录注册