2017-04-18 102 views
1

这是我的表(CELLID)结构。Knex不返回插入Id

+---------+------------+------+-----+---------+-------+ 
| 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(自动递增值)。

我在这里错过了什么?

谢谢。

+0

当返回0 ID可以你检查什么实际插入到数据库?如果您将id列的名称更改为'id'而不是'CELL_ID',它会有帮助吗? –

+0

不,如果我将id列的名称更改为'id'而不是'CELL_ID',则无关紧要。只要我们的id是自动生成的,我们就会得到插入的id。 )。 –

+0

同样的问题,不知道为什么:( –

回答

2

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

在你的情况应该是这样的:

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