我对Feathersjs有一个问题,与sequalize集成。如果我像下面那样设置默认分页,并且没有指定排序,则会生成错误,因为生成的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 )
}
}));
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;
}
});