3

我正在尝试编写一个钩子,它将排序添加到具有关联的表上的查询中。我的查询是关于“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'
                    ]
                  ]
                 }
                }
              }
            );
          })

并相应地调整我的关联钩子。这有点愚蠢,尽管在续集中“订单”与“包含”处于同一级别,所以它使事情变得混乱。我的问题仍然归结为:为什么查询对象中的“订单”键不起作用?看起来它以某种方式被认为是一个表字段。

4

0 回答 0