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,由大到小;

        

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值