微信小程序云开发之模糊搜索

以前在做前后端分离的项目时,要实现一些搜索框的模糊搜索时,运气好一点,后端攻城狮会处理好逻辑,前端只需在输入框的value值发生变化时去调用接口重新渲染数据就好了。运气差点,后端攻城狮只会给你一个总的数组,然后在值发生变化时得自己动手写逻辑去筛选数据。那么在微信小程序云开发上是怎么实现的了?

微信小程序云开发之模糊搜索

好的,我们先来开看一下我录制的一个小demo,在使用代码前我们需要注意一些细节。当我们直接用api去匹配数据库时一定要注意数据库操作权限的问题,否则不管匹配什么返回都是空的,如果是间接通过云函数去操作的话就不会有这种问题,具体看gif。

在这里插入图片描述


主要代码

要实现模糊搜索的话直接使用构造正则表达式就好了。

☞官方文档API:Database.RegExp

❀直接用api调用(需要数据库操作权限,会有限制20条的局限)

const db = wx.cloud.database()
// 直接调用
//msg为要搜索的集合,可以自己定义
db.collection('msg').where({
  //text为要搜索的对象名,务必对应集合里面的名字
  text: db.RegExp({
    //inputValue为输入框的值,也是就要查询内容,可以自己定义
    regexp: inputValue,
    //大小写不区分
    options: 'i',
  })
}).get().then(res => {
  console.log(res)
})

❀通过云函数调用

/*------------------------小程序端代码---------------------------*/
//fuzzySearch为云函数的名字,可以自己定义
wx.cloud.callFunction({
  name: 'fuzzySearch',
  data: {
    inputValue: inputValue
  }
}).then(res => {
  // console.log(res)
  this.setData({
    resultArr: res.result.data
  })
})

/*------------------------云函数端代码---------------------------*/
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database()

// 云函数入口函数
exports.main = async (event, context) => {
  //输入框的值
  let inputValue = event.inputValue;
  return await db.collection('msg').where({
    //text为要搜索的对象名,务必对应集合里面的名字
    text: db.RegExp({
      //从搜索栏中获取的value作为规则进行匹配。
      regexp: inputValue,
      //大小写不区分
      options: 'i',

    })
  }).get()
}

需要源代码的可以点这下载,把代码拷贝到你项目的对应位置,记得上传云函数,另外在你的云数据库中创建相应集合,这样基本就没问题了==》百度网盘 ——提取码6w4m

拷贝代码或者下载demo后报错的看这里,务必认真看完文章描述及录制的gif,检查自己创建的集合名字、搜索字段名是否对应得上,检查数据库的权限问题,最后别忘了上传云函数,都学云开发了,务必认真、细心,别拷了代码还不会用。 (╯°Д°)╯︵┻━┻


最后想补习云函数的可以点击这里哦!! 传送门

  • 20
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值