2017-04-18 130 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) { 
     // ... 
    })