2017-10-10 102 views
0

目前,我正在運行一個帶有express的節點js後端以從客戶端訪問mysql數據庫。現在我正在重構我的代碼,以將來自客戶端的「胖」事物也放到nodejs後端。 我最初的想法是讓喜歡快速通道:通過nodejs訪問mysql數據庫的最佳實踐

ModuleA:

router.get('/getitem/:code',(req, res) => { 
let sql = `SELECT * FROM xyz WHERE CODE = ${req.params.code}`; 
let query = db.query(sql, (err, result) =>{ 
    if(err == null){ 
    console.log(result); 
    res.send(result); 
    }else{ 
    console.log("Error by getting item from db: " + err); 
    throw err; 
    } 
}); 
}); 

而由其他模塊通過HTTP請求訪問它,如果需要的話:

function geodataByLocationcode(locationcode){ 
request({ 
    method: 'GET', 
    url: "http://" + server_connection.host + ":" + server_connection.port + '/getitem/' + locationcode, 
    headers: { 
    "Content-Type": "application/json" 
    } 
},function(error, response, body){ 
.... 
} 

但是,這是最好的方法來做到這一點? 或者更好地以更直接的方式訪問數據庫 ,因爲請求現在也來自後端?

+0

那麼在我誠實的意見在我們的控制器的數據庫訪問是不是一個好方法...爲什麼沒有一個服務模塊處理數據庫查詢?因爲在你的控制器有數據庫的依賴關係,這將使單元測試很難... –

+0

你有任何這樣的例子/教程? – WeSt

回答

1

您可以找到一個很好的示例,說明如何使用本機驅動程序使用MySql和Node.js(沒有像knex或ORM之類的任何查詢生成器,如書架)。

依賴關係:

  • expressjs 4.x的
  • mysql2

expressjs 4.x的

的核心概念是:

例子:https://github.com/Talento90/organization-api/tree/master/organizations-api/src