Проблема в том, что ваша async
функция не ожидает окончания запроса до 1025 *.
. Она должна возвращать обещание, которое разрешается после завершения запроса, но вместо этого возвращает обещание, которое немедленно разрешается в возвращаемое значение. функции connection.query()
.
Вы должны изменить это на:
module.exports = (query) => {
return new Promise(resolve =>
connection.query(query, (error, results) => {
console.log(query);
if (error) {
// connection.end();
console.log('error');
throw error;
}
// connection.end();
console.log(results);
resolve(results);
})
);
}
С опущенными закомментированными строками и более коротким синтаксисом:
module.exports = (query) => new Promise((resolve, reject) =>
connection.query(query, (error, results) => {
if (error) return reject(error);
resolve(results);
})
);
И еще короче:
module.exports = (query) =>
new Promise((resolve, reject) =>
connection.query(query, (error, results) =>
error ? reject(error) : resolve(results)
)
);
Чтобы уточнить : ваше ключевое слово async
не имело никакого эффекта, потому что оно позволяет вам использовать await в своей функции и переносить все, что вы возвращаете в обещание.
Вы не использовали await
s и немедленно вернули результат с помощью лямбда-функции.
Обратите внимание, что ваш оператор возврата, возвращаемый из обратного вызова, передается в функцию connection.query, а не из главной функции.