云函数jql语法查询数据时如果字段值为数字或英文不包含中文正则方式则无法搜索对应数据在uni-app

云函数jql语法查询数据时如果字段值为数字或英文不包含中文正则方式则无法搜索对应数据在uni-app

示例代码:

whereStr = ${new RegExp('82','i')}.test(_creatorId); //这个就是where条件,最基础的写法,没有添加任何其他的

操作步骤:

看上面图片,没有包含中文的数据就是搜索不到,根据教程文档写法写的

预期结果:

whereStr = ${new RegExp('82','i')}.test(_creatorId); 对着教程问的上的写法

实际结果:

希望搜索到对应数据

bug描述:

同样的代码,搜索_creatorId字段中包含82的内容,如果数据表中字段值没有包含中文就是搜索不到。如果包含了中文才能搜索到

Image 1 Image 2


更多关于云函数jql语法查询数据时如果字段值为数字或英文不包含中文正则方式则无法搜索对应数据在uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

_creatorId 是用户id吗?

更多关于云函数jql语法查询数据时如果字段值为数字或英文不包含中文正则方式则无法搜索对应数据在uni-app的实战教程也可以访问 https://www.itying.com/category-93-b0.html


是的,对应用户表的_id

回复 啊啊啊啊三: 这是查询没有实际意义吧

根据你描述的问题,这可能是JQL语法中正则表达式使用方式的问题。在云函数JQL查询中,直接使用RegExp对象可能不是最佳实践。建议改用以下方式:

  1. 对于纯数字或英文的查询,可以尝试使用db.command.regex方法:
const db = uniCloud.database()
const _ = db.command
whereStr = {
  _creatorId: _.regex({
    regexp: '82',
    options: 'i'
  })
}
  1. 或者更简单的使用包含查询:
whereStr = {
  _creatorId: /82/i
}
  1. 如果仍需要保持正则表达式方式,确保字段类型匹配:
whereStr = {
  _creatorId: new RegExp('82', 'i')
}
回到顶部