首页 > 编程语言 >微信小程序云开发如何实现多条件多字段模糊查询

微信小程序云开发如何实现多条件多字段模糊查询

时间:2023-11-05 19:37:22浏览次数:39  
标签:category const name 微信 模糊 db 查询 多字段


之前的博文中,已经跟大家介绍过,微信小程序云开发如何实现单条件单字段的模糊查询,这个是很常见的业务需求。在一些更复杂的场景下,我们需要实现多条件多字段的模糊查询,比如同时兼容对商品名称、类别、产地等多条件的模糊查询。我们看一下云开发如何实现。

什么是多条件模糊查询(与、或)

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

在实际的项目开发时,我们经常需要根据用户输入的多个条件进行数据库查询。而模糊查询是指根据一部分信息来查找数据库中的记录,而不是完全匹配。多条件模糊查询则是在这个基础上,结合多个条件进行查询。

而多条件模糊查询又分"与"和"或"。

"与"操作,就是我们多个条件的模糊查询,同时满足才会被查询到。而"或"操作,就是我们多个条件的模糊查询,只要能对上一个满足的条件,就会被查询到。

例如,我们在对商品的名称、类别、产地进行查询时,要筛选名称中包含"果",类别包含"水",产地包含"河"的条件。"与"操作就需要数据同时满足这三个模糊查询的条件,"或"操作就是满足一个即可。

云开发如何实现多条件模糊查询的"与"操作

微信小程序云开发如何实现多条件多字段模糊查询_小程序

假设我们有一个存储商品信息的数据库集合 products,其中每个商品有 name(商品名称)和 category(商品类别)两个字段。我们希望用户可以同时输入商品名称和类别进行查询,匹配同时满足的数据。

在云函数中,可以新建searchData函数使用以下代码实现多条件同时满足的模糊查询:

// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();

const db = cloud.database();

// 云函数入口函数
exports.main = async (event, context) => {
  const { name, category } = event;
  try {
    const result = await db.collection('products')
      .where(
        db.command.and([
          {
            name: db.RegExp({
              regexp: name,
              options: 'i',
            }),
          },
          {
            category: db.RegExp({
              regexp: category,
              options: 'i',
            }),
          },
        ])
      )
      .get();
    return result.data;
  } catch (err) {
    console.error(err);
    return err;
  }
};

在小程序页面中请求云函数:

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

云开发如何实现多条件模糊查询的"或"操作

单一满足和同时满足在实现方式上,只有一点点区别,在使用云数据库API时,同时满足是db.command.and(),单一满足是db.command.or()

微信小程序云开发如何实现多条件多字段模糊查询_字段_02

例如:

// 云函数入口文件
const cloud = require('wx-server-sdk');
cloud.init();

const db = cloud.database();

// 云函数入口函数
exports.main = async (event, context) => {
  const { name, category } = event;
  try {
    const result = await db.collection('products')
      .where(
        db.command.or([
          {
            name: db.RegExp({
              regexp: name,
              options: 'i',
            }),
          },
          {
            category: db.RegExp({
              regexp: category,
              options: 'i',
            }),
          },
        ])
      )
      .get();
    return result.data;
  } catch (err) {
    console.error(err);
    return err;
  }
};

总结

通过以上的方法,我们可以实现在微信小程序云开发中进行多条件模糊查询。

首先要清楚了解自己的业务场景,在多条件查询的前提下,是需要同时满足,还是单一满足。再选择对应的云数据库API db.command.ordb.command.and, 搭配 db.RegExp使用,即可灵活实现既定的需求。这种方式不仅提高了查询的灵活性,也为用户提供了更好的搜索体验。


标签:category,const,name,微信,模糊,db,查询,多字段
From: https://blog.51cto.com/u_15295488/8194733

相关文章

  • 微信小程序云开发如何优雅的实现模糊查询
    微信官方自从推出微信小程序云开发之后,让小程序开发的门槛再次降低,你可以不需要掌握任何后端的语言和数据库,有一些js的基本功,就可以完成一个完整带前后端交互功能的小程序项目。今天我们介绍一个日常开发中非常常见的需求,就是实现模糊查询,这个主要是后端做的,我们看看云开发如何实现......
  • 基于微信小程序的短文写作竞赛管理系统-计算机毕业设计源码+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参数值判断并获取对应的内网与外网网关地......