gpt4 book ai didi

javascript - 属性 'length' 不存在于类型 ... mysql2 模块中的 OkPacket

转载 作者:行者123 更新时间:2023-12-03 07:01:20 30 4
gpt4 key购买 nike

我有类似的代码 - 非常简单,只是为了展示案例。

this.getCode = (code: string): Promise<codeObject | false> => {
return new Promise((resolve, reject) => {
pool.query('SELECT * FROM ?? WHERE code = ?', [TABLE, code], function (err, result) {
if (err) {
return reject(err);
}

if (result.length === 0) {
return resolve(false);
}
});
});
};

问题在行 if (result.length === 0) { ,错误为 error TS2339: Property 'length' does not exist on type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[]'.
我找不到任何方法将 OkPacket 重新定义为至少具有 length?: number这足以忽略该错误(大多数选择无论如何都不会得到OkPackets,如果我知道它不是OkPacket,我不想检查每个选择的类型)...

最佳答案

我遇到了类似的问题,并且能够通过检查查询的结果行是否为数组来修复 TypeScript 给出的警告,“类型'OkPacket'上不存在属性'长度'”。这对我来说比使用 JSON.stringify() 将行转换为字符串要容易得多。
使用上面的原始示例,我会将 result.length 比较更改为:

if (Array.isArray(result) && result.length === 0) {
return resolve(false);
}

关于javascript - 属性 'length' 不存在于类型 ... mysql2 模块中的 OkPacket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55530602/

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