返回插入的 id 与 TypeORM & NestJS 原始查询: await connection.manager.query('INSERT INTO



我希望使用带有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,文档中没有提到返回值。查看查询的源代码,返回类型为any。由于它是一个原始查询,它可能会根据您使用的数据库类型而不是标准格式返回对象。

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

相关内容