Sequelize排序问题: 关联其他表数据的排序实现

问题描述:
有一对多或者多对多的关联表数据要一起提取返回前端时,在没有申明排序规则的情况下,关联的数据的顺序是随机的。在前端多次调用这类接口,会发现,页面展示的关联数据的位置总是动态变化的,对于对数据展示要前后一致的产品而言,这样的情况,是不被允许的。所以,要添加排序规则,以使关联的数据的展示,也是前后一致,而不是动态变化的。

解决方案:
针对上述问题,经过实践,整理最终的解决方案如下所示:

ctx.model.ModelTable1.findAll({
      include: [
        {
          model: ctx.model.ModelTable2,
          required: false,
          as: 'table2',
          include: [
            {
              model: ctx.model.ModelTable3,
              required: false,
              as: 'table3',
            },
          ],
        },
      ],
      // 重点是order中的配置
      order: [['sort', 'asc'], ['table2', 'sort', 'asc'], ['table2', 'table3', 'sort', 'asc']], 
    });

以上实例,一个数据库表嵌套了两层,当需要对每一层数据进行排序时,需要在order中,按照嵌套层次,依次进行配置。配置项主要分三部分,一表名(别名,顶层表可以忽略);二排序依赖的字段,一般是id,或者创建修改时间,或者特定的排序字段; 三排序规则,asc: 由小到大,desc,由大到小;

posted on 2022-11-29 14:29  zhangzongshan  阅读(213)  评论(0)    收藏  举报

导航