我正在尝试编写一个挂钩,该挂钩将具有关联关系的表的排序添加到查询中。我的查询是在'points'上,它具有一个联接表'point_photos',然后将m:n关联到'photos'。标准的feathersjs $ sort不能用于关联的排序,因此我尝试在钩子中设置后缀'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在我看来对于钩子和查询都是相同的...
另外,当我简化查找查询“ order”时,也会遇到相同的错误;不允许在查询对象中添加“订单”?
编辑: 我设法通过将命令添加到“ include”选项中来解决它:
return app.service('points').find(
{
query: {
point_id: [1, 2, 5],
include: { include: ['PointPhotos'], order: [
[
'point_id',
'DESC'
],
[
'PointPhotos',
'photo_id',
'DESC'
]
]
}
}
}
);
})
并相应地调整我的关联钩子。尽管有点像“顺序”和“包含”处于同一级别,但这有点愚蠢,因此使事情变得混乱。我的问题仍然可以归结为:查询对象中的“ order”键为什么不起作用?看起来它某种程度上被认为是表字段。