内容列表排序方式可以通过地址查询参数来设置,先打开 ListOptionsInterface,在这个接口里添加两个属性,添加一个 sort,值的类型是 string。
再添加一个 order,它的值可以是 ASC,或者 DESC。
然后打开 ListOptions 装饰器,先从地址查询参数里,去把 sort,还有 order 解构出来,sort 设置的是排序标准,order 设置的是按升序还是降序排列。
做一下判断,如果地址查询参数里 sort 有值,我们可以让 sort 等于 sort ,else,不然,就让 sort 等于一个默认的排序标准,比如 created。
下面再去做一下判断,检查地址查询参数里有没有 order ,如果有,就让 order 等于,order,可以再用 toUpperCase 把它转换成大写的。
如果没有这个参数的话,就设置一下 order 默认的值,比如让它等于 DESC。
在 return 的东西里面,添加一个 sort,还有一个 order。
服务
打开 PostService,找到 index 方法,在方法里,从 options 参数里面,把 sort,还有 order 解构出来。
然后修改一下用的这个 queryBuilder,orderBy 方法的参数,排序标准用一个计算属性,post,后面加上 sort 的值,排序方式换成 order。
测试
打开 Http 客户端,再发送一下这个内容列表请求,响应回来的内容会使用默认的排序,也就是按创建日期降序排列。
在请求的地址里面,现在可以使用 sort 设置一下排序标准,比如用 updated 作为排序标准,它的值是内容的更新时间, 发送一下这个请求。
得到的响应数据会按照内容的更新时间降序排列,想用升序排序,可以继续再添加一个 order 参数,值设置成 asc。
这回这个内容列表会按照内容的更新时间,升降排列。