目前我正在运行一个带有 express 的 Node js 后端,以从客户端访问 mysql 数据库。现在我正在重构我的代码,将客户端的“胖”东西也放到 nodejs 后端。 我的第一个想法是保持快速路线:
模块A:
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){
....
}
但这是最好的方法吗? 或者以更直接的方式访问数据库会更好吗 因为请求现在也来自后端?
最佳答案
您可以找到一个很好的示例,了解如何使用 native 驱动程序使用 MySql 和 Node.js(无需任何查询构建器,如 knex 或 ORM,如书架)。
依赖关系:
- expressjs 4.x
- mysql2
expressjs 4.x
核心概念是:
- 有一个单独的文件来处理数据库连接(https://github.com/Talento90/organization-api/blob/master/organizations-api/src/database.js)
- 始终使用连接池
- 将数据库逻辑与 API Controller 分离(这使它们与数据库解耦并且更易于测试)
- 如果您使用的是最新版本的 Node.js,还会向您展示如何将 async/await 与 express.js 和 mysql 一起使用
示例:https://github.com/Talento90/organization-api/tree/master/organizations-api/src
关于mysql - nodejs访问mysql数据库的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668183/