节点 js,当包含 "include" 和 "where: array[]" 选项时,使用偏移量和限制的 Sequelize findAndCountAll 不起作用

Node js,Sequelize findAndCountAll with offset and limit doesn't work when contains "include" and "where: array[]" options

我正在尝试根据不同聊天的 ID 从数据库中获取分页消息。如果我不提供 limit 和 offset,它会工作,但是当我提供 limit 和 offset 参数时,它会停止工作。我使用 mariadb sql.

Message.findAndCountAll({
            where: {chat_id: ids},//ids=> array of ints
            offset: limit * page,
            limit: limit,
            include: {
                model: UnreadMessage, as: 'unreadMessages',
                where: {participant_id: userId}
            }
        },
    )

我看到的错误是这样的

"(conn=12896, no: 1064, SQLState: 42000) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''20') AS `messages` INNER JOIN `unread_message` AS `unreadMessages` ON `messa...' at line 1\nsql: SELECT `messages`.*, `unreadMessages`.`message_id` AS `unreadMessages.message_id`, `unreadMessages`.`participant_id` AS `unreadMessages.participant_id` FROM (SELECT `messages`.`id`, `messages`.`chat_id`, `messages`.`content`, `messages`.`sender_id`, `messages`.`created_at` FROM `messages` AS `messages` WHERE `messages`.`chat_id` IN (3, 5) AND ( SELECT `message_id` FROM `unread_message` AS `unreadMessages` WHERE (`unreadMessages`.`participant_id` = 10 AND `unreadMessages`.`message_id` = `messages`.`id`) LIMIT 1 ) IS NOT NULL LIMIT 0, '20') AS `messages` INNER JOIN `unread_message` AS `unreadMessages` ON `messages`.`id` = `unreadMessages`.`message_id` AND `unreadMessages`.`participant_id` = 10; - parameters:[]"

第一次看到的时候我的猜测一直都是对的。错误说明了一切。

...right syntax to use near ''20') AS `mess....

limit 是字符串。使用 +limit 投射它。 如果我是对的,您将直接从请求中传递它,而不是将其强制转换为 integer.