node.js - Adding limit to sequelize findAll destroys the query? -
i'm trying return group of model
s, paginated using limit
, offset
, including grouped count of model's favorites. trivial thing attempt.
here's basic query setup sequelize:
var perpage = 12; var page = 1; return model.findall({ group: [ 'model.id', 'favorites.id' ], attributes: [ '*', [ sequelize.fn('count', sequelize.col('favorites.id')), 'favorites_count' ] ], include: [ { attributes: [], model: favorite }, ], offset: perpage * page
this generates (fairly) expected query:
select "model"."id", "model".*, count("favorites"."id") "favorites_count", "favorites"."id" "favorites.id" "model" "model" left outer join "favorite" "favorites" on "model"."id" = "favorites"."model_id" group "model"."id", "favorites"."id" offset 12;
ignoring fact quotes tables, , selects favorites.id
(forcing me add group clause), , has randomly aliased things exact name or nonsensical name "favorites.id"
(all undesired), seems have worked. let's complete pagination , add limit query:
... offset: perpage * page limit: perpage
it generates query:
select "model".*, "favorites"."id" "favorites.id" (select "model"."id", "model".*, count("favorites"."id") "favorites_count" "model" "model" group "model"."id", "favorites"."id" limit 12 offset 12) "model" left outer join "favorite" "favorites" on "model"."id" = "favorites"."model";
in baffling behavior, has generated inner query , applied limit that, aliased "model"
.
as sanity check looked in docs findall, docs do not seem think command exists.
i suspect doing wrong, can't figure out is. behavior quite bizzarre, , i'm hoping sleep deprivation cause of confusion.
i'm using version 2.0.6
you can use limit , offset in findandcount example
hope helps
Comments
Post a Comment