sql - 使用 TypeORM 和 NestJS 原始查询返回插入的 id : await connection. manager.query(`INSERT INTO

标签 sql typescript mariadb nestjs typeorm

我希望使用 TypeORM 和 NestJS 使用原始查询返回 id 或更好的是所有插入的信息。示例如下:

await connection.manager.query(`INSERT INTO...`)

将查询分配给常量并在下面控制台记录它时,它不会产生任何有用的信息:

OkPacket {
    fieldCount: 0,
    affectedRows: 1,
    insertId: 0,
    serverStatus: 2,
    warningCount: 1,
    message: '',
    protocol41: true,
    changedRows: 0
}

正如你所看到的,它没有返回任何相关信息,上面的insertId显然是不正确的,而且每次都返回这个,无论查询的实际参数是什么。

我知道对于更典型的 TypeORM 查询,您可以使用 .return(['name_of_column_you_want_returned']).execute() 它会很好地返回相关信息。有没有办法用原始查询来做到这一点?谢谢!

最佳答案

tl;dr 您将从 INSERT 命令获取原始 mariadb 驱动程序响应 (OkPacket),并且需要一个新的 SELECT 查询来查看数据。


您正在使用TypeORM EntityManager ,并且文档没有提到返回值。 Looking at the source code for query ,返回类型为 any。由于它是原始查询,因此它可能会根据您正在使用的数据库类型而不是标准格式返回一个对象。

在本例中,您使用的是 MariaDb,它返回 OkPacket。这是文档: https://mariadb.com/kb/en/ok_packet/

关于sql - 使用 TypeORM 和 NestJS 原始查询返回插入的 id : await connection. manager.query(`INSERT INTO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68137015/

相关文章:

typescript - 获取键入的对象中的属性或字段的名称

typescript 参数相互依赖

php - 在两个表上使用内连接后如何添加多行

php - 如何在 MySQL 中选择 3 个相邻的行并重点关注较低的值?

SQL Server 输出参数

sql - 如果 where 条件为 !=?,则不使用数据库索引

mysql - 二进制与普通文本匹配的性能

php - 将 JSON 从 angular 2 发布到 php

MySQL:数据库名称作为 View 中的参数

php - 使用 PHP 为每个 mysql 表行生成单独的 XML 文件