【问题标题】:Adding limit to sequelize findAll destroys the query?添加限制以续集 findAll 会破坏查询?
【发布时间】:2015-05-22 06:12:33
【问题描述】:

我正在尝试返回一组Models,使用limitoffset 进行分页,包括该模型收藏夹的分组计数。一个相当微不足道的尝试。

这是我使用 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

这会生成(相当)预期的查询:

SELECT          "model"."id",
                "model".*,
                Count("favorites"."id") AS "favorites_count",
                "favorites"."id"        AS "favorites.id"
FROM            "model"                 AS "model"
LEFT OUTER JOIN "favorite"              AS "favorites"
ON              "model"."id" = "favorites"."model_id"
GROUP BY        "model"."id",
                "favorites"."id" offset 12;

忽略它引用表的事实,它选择favorites.id(迫使我将它添加到group by子句),并且它随机地将事物别名为其确切名称或诸如@之类的无意义名称987654329@(都是不受欢迎的),它似乎奏效了。但是现在让我们完成分页并将限制添加到查询中:

...
offset: perPage * page
limit: perPage

它现在生成这个查询:

SELECT "model".*,
    "favorites"."id" AS "favorites.id"
FROM   (SELECT "model"."id",
            "model".*,
            Count("favorites"."id") AS "favorites_count"
        FROM   "model" AS "model"
        GROUP  BY "model"."id",
                "favorites"."id"
        LIMIT  12 offset 12) AS "model"
    LEFT OUTER JOIN "favorite" AS "favorites"
                    ON "model"."id" = "favorites"."model";

在完全令人费解的行为中,它生成了一个内部查询并将限制仅应用于该查询,然后将其别名为"model"

作为健全性检查,我查看了 findAll 的文档,但文档 do not seem to think that command exists

我怀疑我做错了什么,但我不知道是什么。这种行为很奇怪,我希望我的睡眠剥夺是我困惑的原因。

我正在使用版本2.0.6

【问题讨论】:

  • 该命令确实存在于文档 docs.sequelizejs.com/en/latest/docs/models/ 但在 readthedocs.org
  • 注意:文档中的搜索似乎区分大小写

标签: node.js postgresql sequelize.js


【解决方案1】:

【讨论】:

    猜你喜欢
    • 2019-03-07
    • 2014-09-10
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-01-19
    • 2020-06-05
    • 2018-12-27
    • 2020-01-16
    相关资源
    最近更新 更多