You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Nestjs+sequelize-typescript+PostgreSQL实现包含查询失败求解决

解决NestJS + Sequelize-Typescript中模糊查询失效的问题

嘿,我明白你遇到的问题了——直接把通配符%和关键词拼接后放到where条件里,Sequelize并不会把它识别为LIKE模糊查询的规则,而是会把整个%${searchedWord}%当作精确字符串去匹配,所以自然查不到你想要的结果啦。

下面是具体的解决步骤:

1. 导入Sequelize操作符

首先确保你已经导入了Sequelize提供的操作符工具,它能帮我们实现各种SQL查询条件:

import { Op } from 'sequelize';

2. 修改查询条件为模糊匹配

把原来的where条件替换成使用Op.like(区分大小写)或者Op.iLike(PostgreSQL专属,不区分大小写)的形式:

async findUsers(searchedWord: string): Promise<users[]> {
  return await this.USER_REPOSITORY.findAll({
    attributes: ['id', 'name'],
    where: {
      content: {
        // 区分大小写的模糊匹配
        [Op.like]: `%${searchedWord}%`
        // 如果需要不区分大小写,换成下面这行:
        // [Op.iLike]: `%${searchedWord}%`
      }
    },
    order: [['id', 'ASC']]
  });
}

额外提示

使用Sequelize的操作符来构建查询还有个好处:它会自动处理参数化查询,避免直接字符串拼接带来的SQL注入风险,比手动拼接SQL要安全得多。

内容的提问来源于stack exchange,提问作者Intissar Intissar

火山引擎 最新活动