如何关闭我的异步数据库连接?
How to do get my async database connection to close?
您好,我正在尝试执行一个 node.js 函数来打开数据库连接,执行查询,然后关闭。
一切正常,直到我需要关闭连接为止。我假设我的语法有问题,但我无法弄清楚。
代码如下:
async function databaseConnection() {
const mysql = require('mysql2/promise');
var connection = await mysql.createConnection({
host:'*******'
, user:'*******'
, password:'*******'
, database:'*******'
});
var q = 'SELECT ******* AS sha1 FROM ******* limit 10';
await connection.execute(q, function(err, rows, fields) {
if(err){
console.log("An error ocurred performing the query." + err);
return;
}else{
console.log("Query succesfully executed: ");
rows.forEach( (row) => {
console.log('sha1 from db row: ' + row.sha1);
});
}
});
await connection.end();
}
databaseConnection();
Nik Kyriakides 提出了一个关于混合 async/await 与回调的很好的观点,这解决了我的问题。我将其粘贴在这里以回答问题:
I don't know about your connection end issues but this line looks wrong: await connection.execute(q, function(err, rows, fields). You're mixing async/await and error-first callbacks. Use one or the other. You probably want to do something like: const rows = await connection.execute(q). – Nik Kyriakides 57 mins ago
您好,我正在尝试执行一个 node.js 函数来打开数据库连接,执行查询,然后关闭。
一切正常,直到我需要关闭连接为止。我假设我的语法有问题,但我无法弄清楚。
代码如下:
async function databaseConnection() {
const mysql = require('mysql2/promise');
var connection = await mysql.createConnection({
host:'*******'
, user:'*******'
, password:'*******'
, database:'*******'
});
var q = 'SELECT ******* AS sha1 FROM ******* limit 10';
await connection.execute(q, function(err, rows, fields) {
if(err){
console.log("An error ocurred performing the query." + err);
return;
}else{
console.log("Query succesfully executed: ");
rows.forEach( (row) => {
console.log('sha1 from db row: ' + row.sha1);
});
}
});
await connection.end();
}
databaseConnection();
Nik Kyriakides 提出了一个关于混合 async/await 与回调的很好的观点,这解决了我的问题。我将其粘贴在这里以回答问题:
I don't know about your connection end issues but this line looks wrong: await connection.execute(q, function(err, rows, fields). You're mixing async/await and error-first callbacks. Use one or the other. You probably want to do something like: const rows = await connection.execute(q). – Nik Kyriakides 57 mins ago