小程序 | 云数据库模糊查询 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 小程序相关 >

小程序 | 云数据库模糊查询

发表时间:2022-7-26

发布人:葵宇科技

浏览次数:65

本文介绍如何在小程序的云数据库中实现模糊查询。

1. 官方方案
官方文档 ? ?官方文档??
构造正则表达式,仅需在普通 js 正则表达式无法满足的情况下使用

options 参数说明:

options 支持 i, m, s 这三个 flag,注意 JavaScript 原生正则对象构造时仅支持其中的 i, m 两个 flag,因此需要使用到 s 这个 flag 时必须使用 db.RegExp 构造器构造正则对象。flag 的含义见下表:

// 原生 JavaScript 对象
db.collection('todos').where({
  description: /miniprogram/i
})

// 数据库正则对象
db.collection('todos').where({
  description: db.RegExp({
    regexp: 'miniprogram',
    options: 'i',
  })
})

// 用 new 构造也是可以的
db.collection('todos').where({
  description: new db.RegExp({
    regexp: 'miniprogram',
    options: 'i',
  })
})

2. 其他方案
?

官方文档中并没有模糊查询的功能,但是有正则表达式的功能,所以模糊查询就可以这样实现

const db = wx.cloud.database(); 
   db.collection("collectionName").where({      //collectionName 表示欲模糊查询数据所在collection的名
      columnName:{                        //columnName表示欲模糊查询数据所在列的名
        $regex:'.*' + queryContent + '.*',      //queryContent表示欲查询的内容,‘.*’等同于SQL中的‘%’
        $options: 'i'                     //$options:'1' 代表这个like的条件不区分大小写,详见开发文档
      }
    }).get()

3. 实际使用示例
// 支持的参数: keyType - 事件类型,item - 服务条目对象,
// searchText-搜索关键字
exports.main = async (event, context) => {
  switch (event.keyType) {
    case "add":
      return await serviceDB.add({
        data: event.item
      })
    case "list":
      const db = cloud.database()
      const _ = db.command
      return await db.collection("services").where({
        // 官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Database.RegExp.html
        service: db.RegExp({
          regexp: '.*' + event.searchText + '.*',
          options: 'i'
        }),
      }).orderBy("hot", "desc")
        .orderBy("createtime", "desc")
        .get()
    default:
      break
  }
}

-----------------------------------

相关案例查看更多