Sequelize排序,关联的子表如何排序问题

2,952 阅读1分钟

官网上面的例子

www.sequelize.com.cn/advanced-as…

Company.findAll({
  include: Division,
  order: [
    // 我们从要排序的模型开始排序数组
    [Division, 'name', 'ASC']
  ]
});

Division指的是对关联的哪个表进行排序

1基础用法

Company.findAll({
  order: [
    ['name', 'DESC']
  ]
});

主要是利用order属性进行排序,这个name是前面没有指定哪个表,就是指主表里面的

用 DESC 表示按倒序排序(即:从大到小排倒序) ---降序排列 (descend:下降,`掉落`)
用 ACS  表示按正序排序(即:从小到大排序)---升序排列 (ascend:上升) 

如何记忆: 雨是从天上掉落,雨水珠从大到小的掉落,那么我们一般需要对时间进行排序,都是从大到小的,最新的日期放前面,用DESC

2关联了子表,还是用的hasMany关联的,怎么对返回的数据进行排序

Company.findAll({
  order: [
    ['name', 'DESC'], [ 'vipPaidInfo', 'createdAt', 'DESC' ]
  ],
  include: [{
      model: this.app.model.HxVipPaid,
      as: 'vipPaidInfo',
      attributes: [ 'quantity', 'expiredAt', 'createdAt' ],
    },
  ]
});

例如上面我company可能有一个公司对应多个vip的供应商,我想拿到最新的一个供应商的信息,这时候我期望的是返回的子表数据也是按照时间到倒序进行排列,直接在order上加一个数组就行[ 'vipPaidInfo', 'createdAt', 'DESC' ]这里的vipPaidInfo就是关联词

3.结果展示

做一天前端就好好学习吧~