gpt4 book ai didi

mysql - 使用 TypeScript 时,Sequelize 在 findAndCountAll() 中生成错误的 SQL 语句

转载 作者:行者123 更新时间:2023-12-03 22:32:31 25 4
gpt4 key购买 nike

我将以下代码用于使用 expressjs 的 REST 路由,我也在我的项目中使用 TS。

const { limit, skip } = req.query as any;
let data: {
count: number;
rows: Array<Eintragung>;
};

try {
data = await Eintragung.findAndCountAll({
limit: limit as number,
order: [['Id', 'DESC']],
});
} catch (error) {
console.error(error);
return res.status(500).json({ error });
}
代码的问题是 sequelize 生成了一个 SQL 语句,其限制看起来像这样 LIMIT '25' ,尽管在 MySQL/MariaDB 中这不是一个有效的语句,因为 25 应该是数字而不是字符串。
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 ''25'' at line 1
当我使用 findAll() 时会发生同样的问题。
如果我像这样将限制硬编码为 25
data = await Eintragung.findAndCountAll({
limit: 25,
order: [['Id', 'DESC']],
});
SQL 语句正确生成并且查询有效。
我想知道我用 TypeScript 做错了什么,我显然必须将 limit 变量声明为数字,因为 sequelize 只接受数字作为限制。
我正在使用 sequelize 6.3.5 和 MariaDB 10.3.27

最佳答案

通过将限制变量包装在 parseInt() 中来修复它,如下所示:

data = await Eintragung.findAndCountAll({
limit: parseInt(limit),
order: [['Id', 'DESC']],
});

关于mysql - 使用 TypeScript 时,Sequelize 在 findAndCountAll() 中生成错误的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65554740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com