首页 > 编程语言 >微信小程序云开发如何优雅的实现模糊查询

微信小程序云开发如何优雅的实现模糊查询

时间:2023-11-05 19:37:14浏览次数:31  
标签:const keyword 微信 模糊 查询 搜索 优雅 wx


微信官方自从推出微信小程序云开发之后,让小程序开发的门槛再次降低,你可以不需要掌握任何后端的语言和数据库,有一些js的基本功,就可以完成一个完整带前后端交互功能的小程序项目。今天我们介绍一个日常开发中非常常见的需求,就是实现模糊查询,这个主要是后端做的,我们看看云开发如何实现。

什么是模糊查询

公众号:Code程序人生,个人网站:https://creatorblog.cn

在数据库操作中,模糊查询是一种常见的数据搜索方式,它允许我们根据指定的关键词来匹配数据库中的记录,而不需要完全匹配关键词。模糊查询通常用于处理用户输入的搜索关键词,使得搜索更加灵活和智能。

例如,当用户在前端页面中的某个搜索框中输入"苹果",如果是非模糊查询,就必须精确匹配到某个字段的值为"苹果"。而如果是模糊查询,只要某个字段的值内包含"苹果"都会被查询到,比如:"苹果手机、苹果笔记本、苹果耳机"等。

云开发如何实现模糊查询

在微信小程序中,我们可以借助云开发的数据库服务来实现模糊查询。以下是实现模糊查询的步骤:

初始化云开发环境

首先,在小程序的app.js文件中初始化云开发环境:

// app.js
App({
  onLaunch: function () {
    // 初始化云开发环境
    wx.cloud.init({
      env: 'your-cloud-environment-id',
    })
  }
})

在云开发控制台创建集合

在云开发控制台中创建一个集合(类似于关系型数据库中的表),用于存储需要进行模糊查询的数据。

微信小程序云开发如何优雅的实现模糊查询_前端

编写模糊查询的云函数

在小程序的cloudfunctions目录下创建一个新的云函数,例如searchData

微信小程序云开发如何优雅的实现模糊查询_小程序_02

在该云函数的index.js文件中编写模糊查询的代码:

// cloudfunctions/searchData/index.js
const cloud = require('wx-server-sdk')
cloud.init()

const db = cloud.database()
const _ = db.command

exports.main = async (event, context) => {
  // 用户输入的内容
  const { keyword } = event
  try {
    const result = await db.collection('your-collection-name').where({
      name: db.RegExp({
        regexp: keyword,
        options: 'i', // 不区分大小写
      })
    }).get()
    
    // 返回搜索到的结果
    return result.data;
  } catch (err) {
    console.error(err)
    return err;
  }
}

在上面的代码中,name是需要进行模糊查询的字段,keyword是用户输入的搜索关键词。db.RegExp会根据用户输入的关键词构造一个正则表达式,实现模糊匹配。

在小程序页面调用云函数进行模糊查询

在小程序的页面中,当用户输入搜索关键词后,调用上面创建的云函数进行模糊查询:

// pages/index/index.js
Page({
  data: {
    keyword: '',
    searchResult: []
  },
  onKeywordInput(e) {
    this.setData({
      keyword: e.detail.value
    })
  },
  async search() {
    const { keyword } = this.data;
    if (keyword.trim() === '') {
      wx.showToast({
        title: '请输入搜索关键词',
        icon: 'none'
      })
      return;
    }
    wx.showLoading({
      title: '搜索中...',
    })
    try {
      const res = await wx.cloud.callFunction({
        name: 'searchData',
        data: {
          keyword,
        }
      });
      this.setData({
        searchResult: res.result
      })
    } catch (err) {
      console.error(err)
      wx.showToast({
        title: '搜索失败',
        icon: 'none'
      })
    } finally {
      wx.hideLoading()
    }
  }
})

在上面的代码中,onKeywordInput函数用于监听用户输入的搜索关键词,search函数用于调用云函数进行模糊查询,并将查询结果保存到searchResult中,供页面渲染显示。

总结

通过云开发,我们可以轻松实现小程序中的模糊查询功能。首先,我们需要在云开发控制台创建集合,并在云函数中编写模糊查询的代码。然后,在小程序页面中调用云函数,传入用户输入的关键词,即可获取模糊查询的结果。这种方式简单而高效,为小程序开发提供了强大的数据库支持,使得数据操作更加便捷和灵活。


标签:const,keyword,微信,模糊,查询,搜索,优雅,wx
From: https://blog.51cto.com/u_15295488/8194734

相关文章

  • 基于微信小程序的短文写作竞赛管理系统-计算机毕业设计源码+LW文档
    摘 要随着世界经济信息化、全球网络化的到来推动信息线上管理的飞速发展,为短文写作竞赛行业的改革起到关键作用。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、畅通、高效的短文写作竞赛管理系统小程序。当前的短文写作竞赛管理存在工作效率低下,人员和......
  • 基于微信小程序的上门维修系统-计算机毕业设计源码+LW文档
    摘 要随着科学研究的不断深入,有关上门维修的各种信息量也在成倍增长。面对庞大的信息量,就需要有上门维修系统来提高管理工作的效率。通过这样的系统,我们可以做到信息的规范管理和快速查询,从而减少了管理方面的工作量。建立基于微信小程序的上门维修系统,进一步提高用户对上门维......
  • 使用Gorm进行高级查询
    使用Gorm进行高级查询原创 Slagga 技术的游戏 2023-11-0422:42 发表于广东收录于合集#Golang83个深入探讨GORM的高级查询功能,轻松实现Go中的数据检索高效的数据检索是每个应用程序性能的核心。GORM,强大的Go对象关系映射库,不仅扩展到基本的CRUD操作,还提供了高级的......
  • sqlserver查询库中所有表的字段并进行拼接
    --查询库中所有表的字段信息SELECTTABLE_NAME,COLUMN_NAME,DATA_TYPEFROMINFORMATION_SCHEMA.COLUMNSWHERETABLE_SCHEMA='dbo'ORDERBYTABLE_NAME,ORDINAL_POSITION;--查询库中所有表的字段并进行拼接SELECTTABLE_NAME,STUFF((SELECT','+COLUMN_N......
  • pc微信逆向之收取消息及撤回消息
    收取消息关键词及内存值分布原理猜测:根据MsgSvrID本地数据库查询,看有没有到库里,如果有,则记录:addListUniqBySvrIddicardmsgbecausesvridrepeat%d,否则开始正常进库,所以Hook的地方,就是根据这个关键词找到函数的头就可以1).关键词:addListUniqBySvrIddicardmsgbecausesvrid......
  • uniApp 仿微信下拉菜单
    uniApp仿微信下拉菜单手指长按事件longpress@longpress="longpress(index,$event)"下拉菜单 <!--长按的下拉菜单--> <viewclass="jh-w-200jh-h-60-minjh-dropDownMenujh-shadow-greyjh-bg-whitejh-solid" :id="'dropDownMenu&#......
  • EFCore 使用FluntApi配置 全局查询筛选器
    我们在类中通常会有一个属性为IsDel来表示软删除或也称逻辑删除,这个属性会导致我们在进行查询操作时,每一次都要.where(s=>s.IsDel==false)非常的麻烦。在使用efCore时可以通过配置查询筛选器来很好的解决这个问题。publicclassSysUser{publiclongId{get;set;}......
  • 【趣味Javascript】前端开发中不为人知的LHS和RHS查询,你真的弄明白了吗? 《1024程序
    ......
  • linux怎么查询网关信息
    linux查询网关信息方法一执行如下命令1route-n系统返回类似如下,根据Destination参数值判断并获取对应的内网与外网网关地址。方法二执行如下命令1netstat-r系统返回类似如下,根据Destination参数值判断并获取对应的内网与外网网关地......
  • 私域营销必备:轻松掌握微信CRM管理方法
    大家在微信私域营销中都遇到了什么问题?比如管理时间不够,群发实效性低,自动回复无法适应变化等等。我们可以利用微信CRM这个工具,轻松解决这些问题。请问你们最想用这个工具解决什么问题呢?使用微信CRM不仅可以帮你成为营销领域中具有竞争力的人物,更是可以让你轻松管理微信私域资源。这......