如何在FeathersJs中设置默认排序顺序

问题描述 投票:1回答:1

我对Feathersjs有一个问题,与sequ​​alize集成。如果我像下面那样设置默认分页,并且没有指定排序,则会生成错误,因为生成的SQL语句无效。

服务创建时默认值为5:

app.use('/manifests', service({
  paginate: {
    default: 5,
    max: 25
  }
}));

生成SQL语句(设置限制为20)

SELECT [id], ...etc
FROM [Manifest] AS [Manifest] OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY

设置默认订单是有意义的,但我不确定如何在服务中执行此操作。

我想在这种情况下实现的SQL语句是

SELECT [id], ...etc
FROM [Manifest] AS [Manifest] ORDER BY Date desc OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY

我想以某种方式为此设置默认值..?

app.use('/manifests', service({
  paginate: {
    default: 5,
    max: 25
  }
  sort:{
    default: date -1  ( or something ) 
  }
}));
sequelize.js feathersjs
1个回答
2
投票

Feathers hooks允许您通过添加$sort common query parameter(如果未设置)将查询修改为您需要的内容:

app.service('/manifests').hooks({
  before(context) {
    const { query = {} } = context.params;

    if(!query.$sort) {
      query.$sort = {
        date: -1
      }
    }

    context.params.query = query;
  }
});
© www.soinside.com 2019 - 2024. All rights reserved.