Node js,当包含“include”和“where:array[]”选项时,使用偏移量和限制对findAndCountAll进行Sequelize不起作用

问题描述

我正在尝试根据不同聊天的 ID 从数据库获取分页消息。如果我不提供限制和偏移,它会起作用,但是当我提供限制和偏移参数时,它会停止工作。我用的是 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