Knex不返回插入ID

这是我的表(CELLID)结构。

+---------+------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+------------+------+-----+---------+-------+ | CELL_ID | int(11) | NO | PRI | NULL | | | STATUS | tinyint(4) | NO | | NULL | | +---------+------------+------+-----+---------+-------+ 

这是我的代码插入到表中。

 knex('CELLID').insert(insertObj) .then(function (result) { _log.info(reqContainer.uuid, "Successfully Added To CELLID||", result) // respond back to request _log.info(reqContainer.uuid, "Exiting CELLID_S"); return resolve(result) // respond back to request }) .catch(function (err) { _log.error(reqContainer.uuid, "Failed Adding To CELLID ||", err) _log.error(reqContainer.uuid, "Exiting CELLID_S"); // respond back to request return reject(Error("Failed Adding CELLID")); }) 

在插入成功后,必须返回Id。这不会发生在我的情况。 我总是得到和ID为0插入。

我曾尝试添加一个额外的列,自动递增主键ID(删除CELL_ID作为PK)。在这种情况下,我得到的ID(自动增量值)。

我在这里错过了什么?

谢谢。

您必须将第二个parameter passing给insert方法,该方法指定要从中检索值的列。

你的情况应该是这样的:

 knex('CELLID').insert(insertObj, 'CELL_ID') .then(function (result) { // ... }) 

MySQL不支持returning ,所以通过Knex不可用。

以下是Knex文档支持的数据库列表: http ://knexjs.org/#Builder-returning

这是我知道得到最后一个插入的行的唯一的其他方法: 如何获得在MySQL中的INSERT行的ID?