云开发之模糊搜索的三种方式


前言和数据库

模糊匹配,如图是数据库中的总数据
在这里插入图片描述


1、模糊搜索的三种方式

1.单个字段搜索

使用RegExp方法,红色箭头所指是数据库中的某一条属性,你用哪条属性,匹配的字段则从这条属性中查找。
官方文档中Regexp方法
在这里插入图片描述
获取搜索框的值,由用户所输入来进行查找
在这里插入图片描述
在这里插入图片描述

代码如下(示例):

//单个字段搜索
  handleSingleField() {
    //console.log(this.data.searchValue);
    //使用RegExp方法  此时只能搜索title 返回回来的数据
    db.collection('aozhu').where({
        title: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      }).get()
      .then(res => {
        console.log(res);
      }).catch(err => {
        console.log(err);
      })
  },

输入 澳猪
数据库总数据为

在这里插入图片描述
返回的数据为
在这里插入图片描述

2.多个字段 或 搜索

使用command的or方法 再配合Regexp方法 即可实现,大体和单个字段搜索相似,功能为满足or中的一个条件即可返回
代码如下(示例):

在这里插入图片描述

 //多个字段  或 搜索
  handleMultipleField_or() {
    //使用command的or方法 再配合Regexp方法 
    db.collection('aozhu').where(_.or([{
        title: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      },
      {
        desc: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      }
    ])).get().then(res => {
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  },

输入 澳猪
数据库总数据为

返回的数据
在这里插入图片描述

3.多个字段 且 搜索

与 或 搜索写法基本一致,实现功能不同,需要满足 and 方法中的所有限制条件,才会返回相应的数据

(示例):

//多个字段  且  搜索
  handleSingleField_and() {
    //使用command的and方法 再配合Regexp方法 
    db.collection('aozhu').where(_.and([{
        title: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      },
      {
        desc: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      }
    ])).get().then(res => {
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  }

输入 **澳猪** 数据库中的总数居为 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ce0c7af633c74cf890acbb686d2ac868.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5LqU6aKc5YWt6Imy55qE5bGB,size_9,color_FFFFFF,t_70,g_se,x_16) 返回的数据 ![在这里插入图片描述](https://img-blog.csdnimg.cn/ea3a95e87fb149d1a830fe160cf91bf3.png)

2、完整代码实例

js(示例):

// pages/search/search.js
let db = wx.cloud.database();
let _ = db.command;
Page({

  data: {
    SingleFieldValue: '', //单个字段的数据
    MultipleField_orValue: '', //多个字段或的数据
    MultipleField_andValue: '', //多个字段且的数据
    searchValue: '' //搜索框的值
  },
  onLoad: function (options) {

  },
  handleSearchValue(e) {
    //console.log(e);
    this.setData({
      searchValue: e.detail.value
    })
  },
  //单个字段搜索
  handleSingleField() {
    //console.log(this.data.searchValue);
    //使用RegExp方法  此时只能搜索title 返回回来的数据
    db.collection('aozhu').where({
        title: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      }).get()
      .then(res => {
        console.log(res);
      }).catch(err => {
        console.log(err);
      })
  },
  //多个字段  或 搜索
  handleMultipleField_or() {
    //使用command的or方法 再配合Regexp方法 
    db.collection('aozhu').where(_.or([{
        title: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      },
      {
        desc: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      }
    ])).get().then(res => {
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  },
  //多个字段  且  搜索
  handleSingleField_and() {
    //使用command的and方法 再配合Regexp方法 
    db.collection('aozhu').where(_.and([{
        title: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      },
      {
        desc: db.RegExp({
          regexp: this.data.searchValue,
          options: 'i'
        })
      }
    ])).get().then(res => {
      console.log(res);
    }).catch(err => {
      console.log(err);
    })
  }
})

wxml(示例):

<input type="text" bindinput="handleSearchValue" style="border: 1px solid #000;"></input>
<button bindtap="handleSingleField">模糊搜索单个字段</button>
<button bindtap="handleMultipleField_or">模糊搜索多个字段()</button>
<button bindtap="handleSingleField_and">模糊搜索多个字段()</button>

总结

大家可以根据自己想要实现的效果来编辑数据库中的数据。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值