Я пытаюсь создать массив элементов из запроса MySQL для возврата из асинхронной функции, но возвращаемые значения пусты.
Вещи, которые я пробовал:
- Читайте до последней информации об async / await
- Переполнение стека
- Многочисленные тесты по изменению кода, замене обратных вызовов, переписыванию функций.
Это для нового веб-сервиса (nodejs), который должен инициализировать значения из базы данных MySQL и после этого быстрый доступ к значениям для сравнения их со значениями, полученными из Интернета. Чтобы ограничить количество обращений к базе данных, я планирую хранить значения в массиве (в памяти) и всякий раз, когда они меняются достаточно (на основе вычислений), записывать их в БД.
Все основано на Linux с использованием узла 11
require('dotenv').config()
var mysql = require('mysql')
var dbconnection = mysql.createConnection({
host: 'localhost',
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PW,
database: process.env.MYSQL_DB
})
dbconnection.connect(function (err) {
if (err) {
console.error('error connecting: ' + err.stack)
}
})
async function ReadDB () {
var ArrBuyPrice = []
var query = 'SELECT * FROM pricing'
var items = await dbconnection.query(query, function (err, rows, result) {
if (err) throw err
for (var i in rows) {
ArrBuyPrice.push(rows[i].price_buy.toFixed(8))
}
return ArrBuyPrice
})
return items
}
async function InitialProcess () {
var DbResult = await ReadDB()
console.log(DbResult)
}
InitialProcess()
Я ожидаю, что console.log
будет [ '0.00000925', '0.00000012' ]