fivec
fivec
  • 发布:2023-01-17 11:40
  • 更新:2023-01-18 09:59
  • 阅读:295

#插件讨论# 【 iTool-Sqlite-ORM - iTool 】单条件查询问题咨询

分类:uni-app
关联插件: iTool-Sqlite-ORM

有个问题请教一下,针对查询接口,单条件查询怎么写?
创建了一个Info(city,location,age)表。
我得写法如下:

async ormSelectData() {  
    let scope = await getApp().globalData.createScopeAsync();  
    scope.Info  
        .where(item =>  
            item.city = this.city  
        )  
        .logger(res => {  
            console.log(res.sql)  
            console.log(res.data)  
        })  
        .params({  
            city: '南京'  
        })  
    console.error(await scope.toListAsync())  
},

但是编译报错 TypeError: Cannot read property 'match' of undefined。
我理解应该是where里面的参数item没有定义,但是正确写法应该是怎么写的?

2023-01-17 11:40 负责人:无 分享
已邀请:
fivec

fivec (作者)

补充: HBuilderX版本:3.6.15

fivec

fivec (作者)

结帖。

问题原因是Android平台会把lambda表达式转化成完整的function函数,导致解析失败。
解决办法如下,LambdaFormatProvider.js中whereFormat方法下4. 分离条件主体

var conditionalArray = fnString.split('=>');  
var header = '';  
var body = '';  
if (conditionalArray.length <= 1) { //Android会把lamnda表达式转换成function函数,不包含'=>'  
    let headerRegExp = new RegExp("(?<=\\()(.+?)(?=\\))", "g")  
    header = conditionalArray[0].match(headerRegExp)[0];  
    let bodyRegExp = new RegExp("(?<=return)(.+?)(?=;)", "g")  
    body = conditionalArray[0].match(bodyRegExp)[0];  
} else {  
    header = conditionalArray[0].replace(/[()]/g, '');  
    body = conditionalArray[1];  
}

要回复问题请先登录注册