2016-02-27 125 views
0

我使用Tedious的NodeJS連接到azure sql數據庫。我成功連接到INSERT和SELECT。但是,當我向「用戶」表中插入一行時,無法獲得列的值。request.on('row',function(columns){})永遠不會調用

代碼是在這裏:

function insertUser(Name, res) { 
    request = new Request("INSERT [user] (name, ticket) VALUES (@Name, @Ticket);", function(err) { 
     if (err) { 
      res.json({ Error: err }); 
     } 
    }); 
    request.addParameter('Name', TYPES.NVarChar, Name); 
    request.addParameter('Ticket', TYPES.Int,10); 
    var result = {}; 
    request.on('row', function(columns) { 
     columns.forEach(function(column) { 
      if (column.value === null) { 
      console.log('NULL'); 
      } else { 
       result[column.metadata.colName] = column.value; 
      } 
     }); 
     res.json(result); 
    }); 

    request.on('done', function(rowCount, more) { 
     console.log(rowCount + ' rows returned'); 
    }); 
    connection.execSql(request); 
} 

我調用該函數:從終端在Mac

router.post('/register', function(req, res){ 
    console.log(req.body); // for logging 
    if (req.body.name) { 
    insertUser(req.body.name, res); 
    } 
}); 

請求

​​

之後,添加數據,但資源上傳.json(結果);沒有叫。我收到了以下消息:「curl:(52)來自服務器的空回覆。」

我想獲取插入用戶的「user_id」。你會知道任何解決方案嗎?

回答

2

這個問題的解決方案是在這裏: https://github.com/pekim/tedious/issues/117

添加選擇@@身份到查詢的末尾。 像這樣:

'INSERT [user] (name, ticket) VALUES (@Name, @Ticket); select @@identity' 

在那之後,我能得到響應數據!

相關問題