gpt4 book ai didi

typescript - 我不明白为什么我在使用 ts-jest 和 sequelize 时遇到这个错误

转载 作者:行者123 更新时间:2023-12-03 22:18:23 24 4
gpt4 key购买 nike

我正在使用 nodeJs、TypeScript、Sequelize 和 jest (ts-jest) 开发 API,但我肯定会理解一个错误。
我有以下代码:

router.get('/hotels', async (req, res) => {
try {
const hotels = await Hotel.findAll({
include: [
{
model: Visit,
},
{
model: Sector,
},
],
...(req.query.limit && { limit: req.query.limit }),
order: [
['name', 'ASC'],
[Visit, 'date', 'ASC NULLS FIRST'],
],
});
res.send(hotels);
} catch (error) {
res.status(404).send({ error });
}
});
但是当我运行命令“jest”时,它向我显示了这个错误:
 app/routes/hotel.ts:33:40 - error TS2345: Argument of type '{ order: ([string, string] | [typeof Visit, string, string])[]; include: ({ model: typeof Visit; } | { model: typeof Sector; })[]; } | { order: ([string, string] | [typeof Visit, string, string])[]; include: ({ ...; } | { ...; })[]; } | { ...; }' is not assignable to parameter of type 'FindOptions | undefined'.
Type '{ order: ([string, string] | [typeof Visit, string, string])[]; limit: string | QueryString.ParsedQs | string[] | QueryString.ParsedQs[]; include: ({ model: typeof Visit; } | { ...; })[]; }' is not assignable to type 'FindOptions'.
Types of property 'limit' are incompatible.
Type 'string | ParsedQs | string[] | ParsedQs[]' is not assignable to type 'number | undefined'.
Type 'string' is not assignable to type 'number | undefined'.

33 const hotels = await Hotel.findAll({
~
34 include: [
~~~~~~~~~~~~~~~~
...
46 ],
~~~~~~~~
47 });
~~~~~
它认为 ts-jest 似乎不理解的类型存在问题。如果你问我,我可以提供更多细节。
我正在使用 jest ^25.5.4、ts-jest^25.5.1 和 Sequelize
任何帮助都感激不尽。在此先感谢您的时间。
马克西姆

最佳答案

我对堆栈不熟悉,但看起来它知道 req.query.limit 的类型是一个字符串,并且这些方法期望 limit 属性是一个数字。
如果您确定 req.query.limit 是一个数字,您可以替换:...(req.query.limit && { limit: req.query.limit }),{limit: req.query.limit ? Number(req.query.limit) : null}或进行更高级的解析以将限制查询参数转换为您认为合适的数字

关于typescript - 我不明白为什么我在使用 ts-jest 和 sequelize 时遇到这个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62661608/

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