小程序(2020版)

小程序搜索功能,云开发搜索,小程序云开发模糊搜索,同时搜索多个字

2021-02-08  本文已影响0人  编程小石头666

今天来给大家讲讲小程序的搜索功能。我这里后台数据库用的是小程序云开发的云数据库。所以我们搜索的时候就要借助云开发来实现。

一,需求

比如我这里有如下的一些数据


image

我们想实现如下搜索需求

我们知道数据库查询的时候有个where语句,但是where语句是查询某个字段全部包含你输入的内容时才可以,所以单纯用where语句来做搜索的话,结果太单一。所以我们今天就来学习下模糊搜索功能的实现。我们以上面三个需求为例,来一个个讲解。

二,实现原理

我们做模糊搜索的时候,其实就是查询某个字段里是否包含我们的搜索词。而模糊搜索需要借助RegExp,来看看RegExp是什么。

image
官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/Database.RegExp.html

三,模糊搜索的代码实现

3-1,模糊搜索单个字段

代码如下


image

查询结果如下:


image
可以看到我们成功的查询到了标题里包含‘小石头的数据’

3-2,模糊搜索多个字段(满足一个即可)

由于我们要查询多个字段,所以我们这里用到了command高级操作符里的or


image

代码如下:


image
查询结果:
image

我们来分析下这两条数据

3-3,模糊搜索多个字段(要同时满足)

由于我们要查询多个字段,所以我们这里用到了command高级操作符里的and


image

代码如下:


image

查询结果:


image

我们来分析下这两条数据

四,源码

为例方便大家使用,我把完整的代码贴到这里,后面大家使用时,直接复制这里的代码,略微改造下就可以了。

    //我这里简单起见就把搜索词写死,正常应该用户输入的
    let searchKey = '小石头'
    let db = wx.cloud.database()
    let _ = db.command

    db.collection('news')
      .where(_.or([
        {//标题
          title: db.RegExp({ //使用正则查询,实现对搜索的模糊查询
            regexp: searchKey,
            options: 'i', //大小写不区分
          }),
        },
        {//描述
          desc: db.RegExp({
            regexp: searchKey,
            options: 'i',
          }),
        }
      ])).get()
      .then(res => {
        console.log('查询成功', res)
      })
      .catch(res => {
        console.log('查询失败', res)
      })

到这里就讲完了,我后面会专门在云开发入门的课程里作为实战案例录制视频给到大家的:
《小程序云开发入门视频》

上一篇 下一篇

猜你喜欢

热点阅读