Вы не можете использовать это таким образом. Без обратного вызова MySQL вместо этого будет передавать результаты, и вам нужно использовать on
прослушиватель событий.
Согласно документации:
Вы НЕ ДОЛЖНЫ предоставлять обратный вызов методу query () при потоковой передаче строк.
Таким образом, вам нужно добавить события и выполнить обещание:
async function myQueryFunction(str, replacements) {
return new Promise(resolve => {
let rows = []
query(str, replacements)
.on('result', (row) => {
// Do something with the row
rows.push(row)
})
.on('end', () => resolve(rows))
})
}
В противном случае вам нужно вызвать метод query
с обратным вызовом, поэтому создайте функцию запроса, которая разрешает обещание ...
async function myQueryFunction(str, replacements) {
return new Promise(resolve => {
query(str, replacements, (err, rows) => {
resolve(rows)
})
})
}
Наконец, вы можете вызвать свой метод, который был создан из одного из приведенных выше примеров, например:
(async () => {
try {
const rows = await myQueryFunction('select count(*) as count from table');
console.log(rows);
} finally {
conn.end();
}
})()