sequelize的where条件接受动态参数传入

2023-05-16

用法1

问题场景

传入参数:数组array,数组元素不定

目标

要实现逻辑:遍历数组,根据inverted的值对同一个表字段增加一个like查询

要生成的sql语句(where条件部分):

`jz_task_info`.`task_tag` LIKE '%,1,%' AND `jz_task_info`.`task_tag` LIKE '%,2,%' 

 

解决方法

直接上代码:

const sequelize = require('sequelize');
const Op = sequelize.Op;

class xxController extends Controller {
    // 查询任务列表
    async getTaskList() {
      //要拼装的动态语句数组
      let dynamicParams = [];
      //前台传入的数组,这里模拟数据
      //let tagList = JSON.parse(ctx.request.body.tagList);
      let tagList = [{id:1,
            "inverted":false,
            text:"aaa",
            type:"primary"
             },
            {id:2,
            inverted:false,
            text:"bbb",
            type:"primary"
             },
            {id:3,
            inverted:true,
            text:"ccc",
            type:"primary"
             }]
      
      if(tagList&&tagList.length>0){
                      tagList.forEach(element => {
                          if(element.inverted === false){
                              dynamicParams.push({
                                  task_tag:  {[Op.like]:`%${element.id}%`}
                              })
                          }
                      });
                  }
      await app.model.JzTaskInfo.findAll({
                      where:{
                        [Op.and]:dynamicParams
                      }
                  });
          };
}

用法2

问题场景

传入参数:数组array,数组个数固定

目标

要实现逻辑:根据inverted的值对同一个表字段增加一个like查询

要生成的sql语句(where条件部分):

`jz_task_info`.`task_tag` LIKE '%,1,%' AND `jz_task_info`.`task_tag` LIKE '%,2,%' 

 

解决方法

直接上代码:

const sequelize = require('sequelize');
const Op = sequelize.Op;

class xxController extends Controller {
    // 查询任务列表
    async getTaskList() {
      //要拼装的动态语句数组
      let dynamicParams = [];
      //前台传入的数组,这里模拟数据
      //let tagList = JSON.parse(ctx.request.body.tagList);
      let tagList = [{id:1,
            "inverted":false,
            text:"aaa",
            type:"primary"
             },
            {id:2,
            inverted:false,
            text:"bbb",
            type:"primary"
             }, 
            {id:3,
            inverted:true,
            text:"ccc",
            type:"primary"
             }];
      if(tagList&&tagList.length>0){
                      tagList.forEach(element => {
                          if(element.inverted === false){
                              dynamicParams.push({
                                  task_tag:  {[Op.like]:`%${element.id}%`}
                              })
                          }
                      });
                  }
      await app.model.JzTaskInfo.findAll({
                      where:{

                               [Op.and]:[{
                                  task_tag:{
                                      [Op.like]: '%,1,%' //这里放要传的参数
                                     }
                              },{
                                  task_tag:{
                                      [Op.like]: '%,2,%'//这里放要传的参数
                                     }]
                      }
                  });
          };
}

like操作符注意细节

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sequelize的where条件接受动态参数传入 的相关文章

随机推荐

  • ubuntu20-mate系统树莓派4B不连接显示器无法启动的问题

    官方更新了ubuntu20 mate xff0c 下载地址 xff1a https ubuntu mate org download armhf 于是我就给树莓派4B装上了 xff0c 配置好了vnc 发现不连接显示器树莓派就无法启动 xf
  • qt如何获取qwebengine在“应用程序输出”中输出的内容

    在webengineview中点击超链接后会在qt creator的 应用程序输出 栏中输出超链接内容 xff0c 如何获取这些输出的显示内容呢 xff1f xff08 既然在控制台中输出了 那么web中的信息一定传到qt了 xff0c 如
  • 判断单链表中是否存在回环

    判断单链表是否存在回环原理很简单 xff0c 即假设有两个指针p1 xff0c p2 在每次循环的时候 xff0c p1先走一步 xff0c p2走两步 xff0c 直到p2碰到空指针或两者相等时循环结束 xff0c 如果两个指针相等则说明
  • linux yum安装卸载jdk8

    1 gt 安装 1 yum y list java 列出jdk列表 2 yum install y java 1 8 0 openjdk demo x86 64 xff08 安装这个java version 正常显示 xff0c 但是jav
  • 使用Document解析xml

    1 引入maven jar包 lt dependency gt lt groupId gt dom4j lt groupId gt lt artifactId gt dom4j lt artifactId gt lt version gt
  • 【math】 向量运算:叉乘

    文章目录 1 定义2 几何意义3 拓展应用 1 定义 c 61 a b 向量的叉乘 xff0c 即求同时垂直两个向量的向量 xff0c 即c垂直于a xff0c 且c垂直于b 假设向量a 61 a x a y a z b 61 b x b
  • 基于Mahout的电影推荐网站的设计与实现(JAVA语言实现)

    1 概要 本系统是一个以Mysql为数据库 xff0c 利用Java servlet开发的基于B S结构的电影推荐网站 服务器是Apache Tomcat xff0c 推荐库是Apache Mahout xff0c 在Eclipse环境下进
  • Java与设备(PLC)通信

    通信名词 上位机 指可以直接发出操控命令的计算机 xff0c 一般是PC host computer master computer upper computer 控制者和提供服务者是上位机 xff1b 工控机 工作站 触摸屏可作为上位机
  • DAMA学习笔记

    第1章 数据管理 1 1 引言 1 数据管理 xff1a 为了实现数据价值 xff0c 制定计划 制度并执行 监督 2 数据管理专业人员 xff1a 技术人员 xff08 数据库管理员 网络管理员 程序员 xff09 和业务人员 xff08
  • 2023 学习日志

    2023 01 03 mybatis源码学习 学习视频 xff1a https www bilibili com video BV1Tp4y1X7FM p 61 1 amp vd source 61 cc82a52a9b9b8b31eca3
  • oracle create view语法

    视图实际上是一个或多个表上的预定义查询 xff0c 这些表称为基表 视图并不存储数据 xff0c 只是在查询视图时才访问基表 视图的优点 xff1a 限制用户只能通过视图检索数据 xff0c 对用户屏蔽基表 可以将复杂的查询编写为视图 xf
  • EL表达式两个foreach嵌套循环

    集合List中加List泛型的泛型 List lt RiskEvaSuitQuestion gt riskEvaSuitQuestionList 61 riskEvaSuitQuestionService getQueList 100003
  • JQuery通过radio,select改变隐藏显示div

    1 xff09 select下拉框控制div的隐藏与显示 lt script gt function checkYear var selectValue 61 34 select name 61 39 periodType 39 34 va
  • 开科唯识笔试

    对于这次的笔试 xff0c 我只想说BiShi 几道编程题加一道SQL题 1 找出所有三位数中的水仙花数 public void getNarcissusNums int g 61 0 s 61 0 b 61 0 sum 61 0 for
  • JDBC批量插入

    最近项目中有用到JDBC技术 xff0c 存在大量数据要进行插入 xff0c 通过研究采用批量插入速度快的不是一点点 下面简单比较了一下普通插入与批量插入5W条数据的时间效率 常规插入 xff1a 耗时12952ms public stat
  • exe应用程序无法启动,因为应用程序的并行配置不正确

    问题 xff1a exe应用程序无法启动 xff0c 因为应用程序的并行配置不正确 有关详细信息 xff0c 请参阅应用程序事件日志 xff0c 或使用命令行 sxstrace exe 工具 原因查找 xff1a 1 xff09 开始 所有
  • TortoiseSVN is locked in another working copy

    TortoiseSVN提交报错 TortoiseSVN is locked in another working copy 原因 xff1a 可能是因为打开了多个commit会话 xff0c 然后又去修改了提交文件的内容 xff0c 导致文
  • Java对接企业微信

    最近需要对接企业微信 xff0c 例如将风险测评结果推送给企业微信中对应的用户 xff0c 然后用户对结果进行查看与确认操作 xff0c 所以这里就涉及到两方面 xff1a 1 xff09 将外部系统内容推送到企业微信 xff1b 2 xf
  • 微众银行面试

    机缘巧合 xff0c 其实并没有换工作的想法 xff0c 却收到了微众的面试邀请 xff0c 就想着去看看当是增长见识吧 xff0c 因为已经好久没准备面试的事情了 xff0c 而且微众毕竟作为腾讯系的看起来好像也不错 说实话那边离地铁站是
  • sequelize的where条件接受动态参数传入

    用法1 问题场景 传入参数 xff1a 数组array 数组元素不定 目标 要实现逻辑 xff1a 遍历数组 xff0c 根据inverted的值对同一个表字段增加一个like查询 要生成的sql语句 xff08 where条件部分 xff