3

関連のあるテーブルのクエリに順序付けを追加するフックを作成しようとしています。私のクエリは、結合テーブル 'point_photos' を持ち、m:n で 'photos' に関連付けられている 'points' に関するものです。標準的なpheersjsの$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 はフックとクエリで同じように見えるので、これは私にとって奇妙です...

また、検索クエリ「順序」を単純化すると、同じエラーが発生します。クエリ オブジェクトに「注文」を追加することは許可されていませんか?

編集:「include」オプションに注文を追加することで、ハックすることができました:

return app.service('points').find(
              {
                query: {
                  point_id: [1, 2, 5],
                  include: { include: ['PointPhotos'], order: [
                    [
                      'point_id',
                      'DESC'
                    ],
                    [
                      'PointPhotos',
                      'photo_id',
                      'DESC'
                    ]
                  ]
                 }
                }
              }
            );
          })

それに応じて、関連付けフックを調整します。これは少しばかげていますが、sequelize の「順序」は「インクルード」と同じレベルであるため、混乱を招きます。私の質問は、次のように要約されます。クエリ オブジェクトの「order」キーが機能しないのはなぜですか? どういうわけかテーブルフィールドと見なされているようです。

4

0 に答える 0