我用mysql2做了一个简单的更新:
UPDATE table1
SET table1.value1 = ?, table1.value2 = ?
WHERE user_id = (
SELECT user_id
FROM user
WHERE company_id = ?
)
table1通过user_id
与user表相关,但我只有company_id
,所以我做了一个子查询(可能应该是一个join,但这是另一个讨论):
const [results, buff] = await connection.execute(query, values);
return results
但是,当访问结果以确保没有错误并且只更新了一行时,results
返回:
console.log
ResultSetHeader {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
info: 'Rows matched: 1 Changed: 0 Warnings: 0',
serverStatus: 2,
warningStatus: 0,
changedRows: 0
}
但是我不能访问这些值。如果我尝试results.affectedRows
,我会得到
Property 'affectedRows' does not exist on type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[]'.
唯一的方法就是执行results['affectedRows']
。有什么建议吗?
2条答案
按热度按时间xam8gpfp1#
所以我忘了说这是一个打字错误,我可以通过以下操作来修复它:
这也适用于:
hwamh0ep2#
我最近遇到了同样的问题,我找到的解决方案是将返回类型添加到connection.execute本身,从mysql2
const result = await pool.execute<OkPacket>(query, values);
提供的类型中,我认为你不再需要它,但希望对其他人有用。干杯。