节点 mysql2 无法访问更新结果

Posted

技术标签:

【中文标题】节点 mysql2 无法访问更新结果【英文标题】:node mysql2 can't access update results 【发布时间】:2020-09-21 03:45:26 【问题描述】:

我正在使用mysql2 进行简单的更新:

   UPDATE table1
    SET table1.value1 = ?, table1.value2 = ? 
    WHERE user_id = (
      SELECT user_id 
      FROM user
      WHERE company_id = ?
    ) 

table1 通过user_id 与用户表相关,但我只有company_id,所以我做了一个子查询(可能应该是一个连接,但那是另一个讨论):

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 我会得到 ​​p>

Property 'affectedRows' does not exist on type 'RowDataPacket[] | RowDataPacket[][] | OkPacket | OkPacket[]'.

使其工作的唯一方法是执行results['affectedRows']。有什么建议?

【问题讨论】:

你看过thisGit问题线程吗? @PhaniMahesh 我正在遵循他们的异步/等待建议:npmjs.com/package/mysql2#using-promise-wrapper 获得错误的唯一方法是使用我正在使用的 try/catch。我应该仅仅依靠它来成功查询吗? 【参考方案1】:

所以我忘了说这是一个打字稿错误,我可以通过以下方式修复它:

const [results, buff] = await connection.execute(query, values);
const json: any = results;
return json.affectedRows //or whatever property I want

这也有效:

const [results, buff] = await connection.execute(query, values);
return json as any; //then in the calling fuction access the properties I want

【讨论】:

我最后也为mysql2响应做了一个接口,所以我不必使用any 您能否更新您的答案以显示您使用的界面?我被困在 RowDataPacket 类型上 所以我在做const [results, buff] = await connection.execute(query, values); return results as IUpdateTokens,接口是interface IUpdateTokens fieldCount?: number, affectedRows?: number, insertId?: number, info?: string, serverStatus?: number, warningStatus?: number, changedRows?: number, 好吧,很有趣。我仍然认为这会给我的 RowDataPacket 实现带来麻烦......但我很快就会看看

以上是关于节点 mysql2 无法访问更新结果的主要内容,如果未能解决你的问题,请参考以下文章

更新到 Ubuntu 16.04 后 mysql2 gem 无法正常工作 - libmysqlclient.so.18

Rails db:schema:load 错误:Mysql2::Error:无法删除或更新父行:外键约束失败

无法在rails控制台中访问Mysql模型。

osx上的mysql:访问被拒绝并且无法连接到套接字

无法访问 XML 元素的节点值

kafka单节点部署无法访问问题解决