#javascript #node.js #async-await #mysql-connector
#javascript #node.js #асинхронный-ожидание #mysql-connector
Вопрос:
я пытаюсь передать параметры sql-запроса в js-файл доступа к данным. я импортировал функцию в текущий файл, но все равно получаю приведенную ниже ошибку.
текущий файл
const tcount = async (value) => {
const sql = 'trainingcount';
const result = await query.findAll(sql);
return resu<
}
файл доступа к данным
const query = (results) => {
findAll: async (sql, result) => {
connection.query(`SELECT * FROM trainingcount`, (err, rows) => {
if (err) {
return results(null, err);
} else {
return results(rows);
}
});
};
};
export { query };
(узел: 11132) Необработанное предупреждение об отказе: ошибка типа:
query.findAll не является функцией
Комментарии:
1. Я немного смущен тем, что
query
должно быть. Похоже, что это функция с одним параметром, но вы пытаетесь получить доступ к ее свойству.2. Пожалуйста, покажите нам, как вы импортируете
query
объект в «текущий файл»3. я выполнил импорт, используя import {query} из ‘../helpers/dataManager.js ‘;
4. Как вы используете
query
? Используете ли вы его где-нибудь еще? Вы это написали или где-то нашли? Если вы его где-то нашли, может быть, у них есть примеры того, как его использовать? Потому что похоже, что вы используете его не так, как он должен использоваться.5. Если вы написали это, то как вы собираетесь его использовать? Почему вы написали
query = (results) => { ... }
, а неquery = { findAll: ... }
?results
Для чего это нужно? Кроме того,query = (results) => ...
это то же самоеquery = function(results) { ... }
, что и функция soquery
, это не объект соfindlAll
свойством, как вы ожидаете.
Ответ №1:
РЕДАКТИРОВАТЬ: проверьте @rid решения в комментариях для конкретной проблемы вызова правильной функции. Мой ответ решает другую проблему в операционном коде.
вы вызываете return
внутри функции обратного вызова, поэтому вы возвращаете ЭТУ функцию, а не findAll
. Вам нужно вернуть обещание:
const query = (results) => {
findAll: (sql, result) => {
return new Promise((resolve, reject) => {
connection.query(`SELECT * FROM trainingcount`, (err, rows) => {
if (err) {
reject(err);
} else {
resolve(rows);
}
});
});
};
};
export { query };
Комментарии:
1. Спасибо, что объяснили, как вернуть @gbalduzzi .узнал хороший способ кодирования