我在类型记录中使用mysql2 2/答应库,但是,我无法理解查询方法返回的类型,也无法解决错误。
我的密码在下面。
import * as mysql from "mysql2/promise";
let mysql_connection: mysql.Connection = await mysql.createConnection({
//Some options here.
});
let backend_mysql_res: [(mysql.RowDataPacket[][] | mysql.RowDataPacket[] | mysql.OkPacket | mysql.OkPacket[] | mysql.ResultSetHeader), mysql.FieldPacket[]] = await mysql_connection.query(`SELECT * FROM data.table ORDER BY time DESC LIMIT 1`);
//The error occurred this line.
console.log(backend_mysql_res[0][0]);
上面代码的最后一行中有关backend_mysql_res[0][0]
的错误消息如下所示。
TS7053: Element implicitly has an 'any' type because expression of type '0' can't be used to index type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[] | ResultSetHeader'. Property '0' does not exist on type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[] | ResultSetHeader'.
上面的错误消息描述了type '0'
,但是,type '0'
是什么?这个型号不是吗?
所以,我找不到解决问题的办法。
mysql2 2/诺言查询方法的正确响应类型是什么?此外,let backend_mysql_res ...
的上述类型规范是我根据IDE的建议编写的。但我觉得这有点太长了。那么,有什么方法可以提高代码的复杂度吗?
这些天我刚开始学打字稿。
任何能帮我的人。
发布于 2022-05-05 20:54:10
它可能不是最好的解决方案,但是您可以使用:
let backend_mysql_res: any = await mysql_connection.query(`SELECT * FROM data.table ORDER BY time DESC LIMIT 1`);
这样你就可以访问你需要的字段了。使用:
console.log(backend_mysql_res)
看看结果。
https://stackoverflow.com/questions/71702563
复制相似问题