Sequelize使用findAndCountAll()进行分页查询+模糊查询+联表查询的注意事项

前言

主包近期在使用Sequelize进行连表查询时,发现涉及到分页查询+模糊查询+联表查询时会出现SQL语句报错,Sequelize无法识别到关联表的情况。(有时Sequelize的ORM工具甚至不如手写SQL好使)

但涉及到模糊匹配 如果直接使用字符串拼接SQL语句的话会有安全风险,所以主包研究了对应的解决方案。

本文设计的技术栈:

  • node+express+ES6语法
  • sequelize ORM工具

1 模型与业务梳理

这里我拿较为简单的两个模型举例,方便大家理解

  • 文章模型(Article)----多个文章属于一个分类   多对一
  • 文章分类模型(Category)----一个分类对应多个文章  一对多

业务逻辑:

  • 当查询分类列表时,附带所属该分类的文章数量

2 模型关联

在进行业务的编写时,需要先对两个模型进行关联绑定,这里我不再对数据库迁移和模型文件进行编写,直接对模型进行关联。

  • 文章分类模型
//文章分类模型 


    static associate(models) {
      //   一个分类对应多个文章
      models.Category.hasMany(models.Article, {
        foreignKey: 'categoryId', // 对应 Article 表中的外键字段
        as: 'articles', // 别名
      })
    }
  • 文章模型
//文章模型

   static associate(models) {

   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值