Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
296 / 257 / 68
Регистрация: 18.06.2015
Сообщений: 570

Результаты запроса к базе данных через await

10.04.2019, 20:26. Показов 2123. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять, как правильно получать результаты запроса при использовании async функци.
Вот так вот работало нормально с коллбэками:
JavaScript
1
db.query(SQL, function (error, results, fields) {...}
Я получал строки и список полей.
Теперь понадобилось вызывать запросы в цикле, коллбэки уже не совсем подходят, перешел на async/await:
JavaScript
1
var results = await db.query(SQL);
Получаю в results что-то не похожее на строки даже отдаленно, хотя в примерах везде так и вызывается. Что сделал не так? И как получить список полей?
Это в node.js, mysql.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.04.2019, 20:26
Ответы с готовыми решениями:

Как сделать базу данных и заместить, три запроса к базе данных ?
1. создать базу данных и заместить ее в бдриде на форме;( Согласно своего варианта создать таблицу базы данных и приложение,...

Результаты запроса из базы данных использовать в качестве параметров в программном коде
результаты SQL-запроса поместить в переменную на C# Добрый день Уважаемые форумчане!! Решаю задачу на C#, использую MS SQL и...

Три запроса к базе данных
Заранее прошу прощения за наглость. Помогите мне, пожалуйста. У меня имеется 3 таблицы: "Операция", "Пациент",...

3
 Аватар для Antiplayer
129 / 112 / 39
Регистрация: 27.09.2012
Сообщений: 305
10.04.2019, 22:33
Чуть больше кода надо. Не ясно, что там у вас за цикл. Вдруг там forEach. Опять же, если функция db.query подразумевает в себе использование коллбека, то вряд ли без него ее можно вызывать. Заодно киньте ссылку на пример, в котором так вызывается
0
296 / 257 / 68
Регистрация: 18.06.2015
Сообщений: 570
11.04.2019, 07:39  [ТС]
Нет, цикл обычный:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function processXLSXTemplate(templates) {
    return new Promise(async function (resolve, reject) {
        var db = dbpool.get();
        for (var curTempl = 0; curTempl < templates.length; curTempl++) {
            //........
            //retrieve data from database
            try {
                console.log(templates[curTempl].SQL)
                var results = await db.query(templates[curTempl].SQL);
                console.log(results)
            } catch (error) {
                return reject(error);
            }
            /* так работало
            db.query(templates[curTempl].SQL, function (error, results, fields) {
                if (error) {
                    return reject(error);
                };*/
            //.....
        };
    })
};
Обнаружил, что results содержит ошибку, но она почему-то не ловится блоком catch:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Query {
  domain: null,
  _events: [Object: null prototype] {},
  _eventsCount: 0,
  _maxListeners: undefined,
  _callback: undefined,
  _callSite:
   Error
       at Pool.query (D:\...\API\node_modules\mysql\lib\Pool.js:199:23)
       at D:\...\API\export\data_export.js:169:29,
  _ended: false,
  _timeout: undefined,
  _timer: Timer { _object: [Circular], _timeout: null },
  sql: 'select * from currency_rate',
  values: undefined,
  typeCast: true,
  nestTables: false,
  _resultSet: null,
  _results: [],
  _fields: [],
  _index: 0,
  _loadError: null }
P
Ошибка бросается из этого места библиотеки mysql:
JavaScript
1
2
3
4
  if (this.config.connectionConfig.trace) {
    // Long stack trace support
    query._callSite = new Error();
  }
Пока не понимаю из-за чего это происходит, но, думаю, это может быть из-за того, что часть кода, отвечающая за создание коннекта pool осталась работать на коллбеках, а нужно и ее переводить на async/await. Пул коннектов формируется при старте сервера, метод get просто возвращает ссылку на уже открытый коннект, этот метод синхронный.
0
126 / 93 / 18
Регистрация: 09.01.2011
Сообщений: 467
13.04.2019, 08:38
Вы уверены, что данная библиотека умеет промисы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.04.2019, 08:38
Помогаю со студенческими работами здесь

Формирование запроса к базе данных
Здравствуйте! Хотел попросить помощи с формированием запроса к БД. Мне нужно создать запрос, который бы выводил строку из таблицы, где есть...

Ошибка запроса к базе данных
Здравствуйте. Возникла проблема в поиске имени пользователя. &lt;html&gt;&lt;head&gt; &lt;body background=&quot;1.jpg&quot;...

Получение и вывод результата запроса к базе через ajax
Необходимо вывести результаты sql запроса к базе в div через ajax. Не получается составить запрос. Вот так получаю результат запроса: ...

Создать 2 запроса в конструкторе по данной базе данных
Здравствуйте всем, нужна ваша помощь. Во вложении база данных, по ней необходимы вот такие запросы: 1)Для указанного интервала дат...

Графическое представление результатов запроса к базе данных
Здравствуйте! Столкнулась с задачей графического представления результатов sql-запросов и не знаю с чего начать. Задача следующая:...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru