问题描述:
有一对多或者多对多的关联表数据要一起提取返回前端时,在没有申明排序规则的情况下,关联的数据的顺序是随机的。在前端多次调用这类接口,会发现,页面展示的关联数据的位置总是动态变化的,对于对数据展示要前后一致的产品而言,这样的情况,是不被允许的。所以,要添加排序规则,以使关联的数据的展示,也是前后一致,而不是动态变化的。
解决方案:
针对上述问题,经过实践,整理最终的解决方案如下所示:
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,由大到小;
标签:table2,Sequelize,关联,asc,model,排序,数据 From: https://www.cnblogs.com/zzsdream/p/16935323.html