使用Sequelize分页时出现SQL语法错误,但在第一页上起作用吗?

时间:2019-02-05 20:54:28

标签: javascript mysql node.js pagination sequelize.js

我是开发人员的新手,因此遇到了很多问题,而我通过谷歌搜索就解决了很多。但这似乎太愚蠢了,我什至找不到任何遇到相同问题的人……也许你能看到错误?

我正在将NodeJS与Sequelize和MySQL数据库一起使用。我正在为就业市场建立一个网站,并希望对工作进行分页。我的数据库中现在有6个工作。

//PAGINATION Function
const paginate = ({ page, pageSize }) => {
    const offset = page * pageSize;
    const limit = offset + pageSize;

    return {
        offset,
        limit
    };
};


// JOBSPAGE /jobs
exports.jobs = function (req, res) {
    let page = 1;
    let pageSize = 2;

    Job.findAll({ offset: page, limit: pageSize })
    .then(jobs => {
        paginate({page, pageSize}),
        res.render("admin/jobs", {jobs, page, pageSize});
    })
    .catch(err => {
        console.log(err);
        res.redirect("/admin");
    });
};

问题是,当 req.query.page === undefined 时,我的代码适用于第一页。但是,当我将网址从 / jobs 更改为 / jobs?page = 1 时,我是从控制台获得的:

Executing (default): 
SELECT
    `id`,
    `title`,
    `description`,
    `location`,
    `createdAt`,
    `updatedAt`
FROM
    `jobs` AS `job`
LIMIT '1', 2;
{ SequelizeDatabaseError: 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 ''1', 2' at line 1

我在这里想念什么?非常感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

LIMIT接收一个整数作为值,如果检查错误,则第一个值是字符串'1',我猜想是直接来自req.query.page的值,只需加上{{1} }之前的数值+