Return 使用 TypeORM 和 NestJS 原始查询插入 id:await connection.manager.query(`INSERT INTO
Return inserted id with TypeORM & NestJS raw query: await connection.manager.query(`INSERT INTO
我正在寻找 return id 或更好的是,插入的所有信息,使用带有 TypeORM 和 NestJS 的原始查询。示例如下:
await connection.manager.query(`INSERT INTO...`)
将查询分配给常量并在下面记录控制台时,它不会产生任何有用的信息:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 2,
warningCount: 1,
message: '',
protocol41: true,
changedRows: 0
}
可以看到,return没有相关信息,上面的insertId
显然是不正确的,每次都是return,不管实际参数是什么查询。
我知道您可以使用更典型的 TypeORM 查询 .return(['name_of_column_you_want_returned']).execute()
并且它会 return 相关信息就好了。有没有办法用原始查询来做到这一点?谢谢!
tl;dr 您正在从 INSERT 命令获取原始 mariadb 驱动程序响应 (OkPacket),您需要一个新的 SELECT 查询才能查看数据。
您正在使用 TypeORM EntityManager, and the docs don't mention a return value. Looking at the source code for query,return 类型是 any
。由于它是一个原始查询,它可能 return 是一个基于您正在使用的数据库类型的对象,而不是具有标准格式。
在本例中,您使用的是 MariaDb,它 return 编辑了 OkPacket
。这是文档:
https://mariadb.com/kb/en/ok_packet/
我正在寻找 return id 或更好的是,插入的所有信息,使用带有 TypeORM 和 NestJS 的原始查询。示例如下:
await connection.manager.query(`INSERT INTO...`)
将查询分配给常量并在下面记录控制台时,它不会产生任何有用的信息:
OkPacket {
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 2,
warningCount: 1,
message: '',
protocol41: true,
changedRows: 0
}
可以看到,return没有相关信息,上面的insertId
显然是不正确的,每次都是return,不管实际参数是什么查询。
我知道您可以使用更典型的 TypeORM 查询 .return(['name_of_column_you_want_returned']).execute()
并且它会 return 相关信息就好了。有没有办法用原始查询来做到这一点?谢谢!
tl;dr 您正在从 INSERT 命令获取原始 mariadb 驱动程序响应 (OkPacket),您需要一个新的 SELECT 查询才能查看数据。
您正在使用 TypeORM EntityManager, and the docs don't mention a return value. Looking at the source code for query,return 类型是 any
。由于它是一个原始查询,它可能 return 是一个基于您正在使用的数据库类型的对象,而不是具有标准格式。
在本例中,您使用的是 MariaDb,它 return 编辑了 OkPacket
。这是文档:
https://mariadb.com/kb/en/ok_packet/