繁体   English   中英

来自插入语句的 MariaDB 响应

[英]MariaDB response from Insert Statement

我目前正在构建一个小型应用程序,到目前为止一切正常,但现在我对返回值感到非常困惑。

我正在使用带有 NodeJS 和 mariadb 连接器的 MariaDB 数据库。 所有语句都通过而没有失败,但是当我发送 INSERT 语句时,数据库会发回以下内容:

OkPacket {affectedRows: 1, insertId: 51n, warningStatus: 0}
affectedRows:
1
insertId:
51n
warningStatus:
0

数据库对语句很好,但我不知道插入 ID 后面的“n”在哪里。 问题是,它破坏了完整的应用程序,因为 JSON.stringify() 说:

TypeError: Do not know how to serialize a BigInt
    at JSON.stringify (<anonymous>)
    at processTicksAndRejections (node:internal/process/task_queues:96:5) {stack: 'TypeError: Do not  know how to serialize a Big…ions (node:internal/process/task_queues:96:5)', message: 'Do not know how to serialize a BigInt'}

因此,DB 将 ID(该表的主键)作为 BigInteger 发送回,而 JSON.stringify() 无法解析它。 但我不希望在响应中使用 BigInteger。

谁能帮我这个? 提前谢谢

您可以将选项传递给连接的查询方法,以将insertId作为字符串返回。

await conn.query(stmt, { supportBigNumbers: true, bigNumberStrings: true})

或者,您可以将其作为Number返回。 如果insertId 无法从 BigInt 转换为 Number,该方法将引发异常

await conn.query(stmt, { supportBigNumbers: true, insertIdAsNumber: true})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM