我正在尝试编写一个钩子,它将排序添加到具有关联的表上的查询中。我的查询是关于“points”的,它有一个连接表“point_photos”,然后将 m:n 关联到“photos”。标准的feathersjs $sort 不能用于关联排序,所以我尝试在一个钩子中设置sequelize ' order ',这非常有效。现在我想从查找查询中设置“订单”:
return app.service('points').find(
{
query: {
point_id: [1, 2, 5],
include: ['PointPhotos'],
order: [
[
'point_id',
'DESC'
],
[
'PointPhotos',
'photo_id',
'DESC'
]
]
}
}
);
})
但现在我得到:
error: SequelizeDatabaseError: column points.order does not exist
这对我来说很奇怪,因为 hook.params.sequelize 对我来说钩子和查询看起来一样......
此外,当我简化查找查询“订单”时,我得到了同样的错误;不允许向查询对象添加“订单”吗?
编辑:我设法通过将订单添加到“包含”选项来解决它:
return app.service('points').find(
{
query: {
point_id: [1, 2, 5],
include: { include: ['PointPhotos'], order: [
[
'point_id',
'DESC'
],
[
'PointPhotos',
'photo_id',
'DESC'
]
]
}
}
}
);
})
并相应地调整我的关联钩子。这有点愚蠢,尽管在续集中“订单”与“包含”处于同一级别,所以它使事情变得混乱。我的问题仍然归结为:为什么查询对象中的“订单”键不起作用?看起来它以某种方式被认为是一个表字段。