Как правильно вывести значения из бд Mysql node js?

Ссылка скопирована
25 февраля 2026 1 ответ

Пытаюсь сделать пока что на Mysql. Вывести значения из бд. Передать в переменные и далее с ними работать. Подскажите как это правильно реализовать. В идеале async await

let mysql = require('mysql'); let con = mysql.createConnection({    host: "127.0.0.1",    user: "root",    password: "",    database: "mania" });  let qry =`SELECT * FROM price_history_1d;`; con.connect(function (err) {    if (err) throw err;    console.log("Connected!");    con.query(qry, function (err, results) {       if (err) throw err;       results.forEach((row) => {          console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, AGE: ${row['price']}`); /// получаю вот такой результат //ID: 570, NAME: someone, AGE: 0.4567 //ID: 571, NAME: someone2, AGE: 0.777 //ID: 571, NAME: dd, AGE: 0.4890 //ID: 571, NAME: dd, AGE: 5.111 // а нужно так как показано ниже. // Каждое значение из таблицы получает свою переменную для дальнейшей работы        });    });    con.end(); });  // вывести данные за пределы функции. И далее с ними работать let id some1=570; let name1 =someone; let sumAGEres1=0.4567; let id some2=570; let name2 =someone2; let sumAGEres2=0.777; let id some3=570; let name3 =dd; let sumAGEres3=0.4890; let id some4=570; let name4 =dd; let sumAGEres4=5.111;

let mysql = require('mysql'); let con = mysql.createConnection({ host: "127.0.0.1", user: "root", password: "", database: "mania" }); let qry =`SELECT * FROM price_history_1d;`; con.connect(function (err) { if (err) throw err; console.log("Connected!"); con.query(qry, function (err, results) { if (err) throw err; results.forEach((row) => { console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, AGE: ${row['price']}`); /// получаю вот такой результат //ID: 570, NAME: someone, AGE: 0.4567 //ID: 571, NAME: someone2, AGE: 0.777 //ID: 571, NAME: dd, AGE: 0.4890 //ID: 571, NAME: dd, AGE: 5.111 // а нужно так как показано ниже. // Каждое значение из таблицы получает свою переменную для дальнейшей работы }); }); con.end(); }); // вывести данные за пределы функции. И далее с ними работать let id some1=570; let name1 =someone; let sumAGEres1=0.4567; let id some2=570; let name2 =someone2; let sumAGEres2=0.777; let id some3=570; let name3 =dd; let sumAGEres3=0.4890; let id some4=570; let name4 =dd; let sumAGEres4=5.111;

Дополнительно:

Ответы:

Для работы с MySQL в Node.js и использования async/await для асинхронных операций, вы можете использовать библиотеку mysql2/promise, которая поддерживает промисы и позволяет использовать async/await. Вот пример того, как можно реализовать ваш запрос:

const mysql = require('mysql2/promise');  async function getData() {   const connection = await mysql.createConnection({     host: "127.0.0.1",     user: "root",     password: "",     database: "mania"   });    try {     const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');     for (let row of rows) {       console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, PRICE: ${row['price']}`);       // Теперь вы можете работать с каждой строкой данных как с объектом       // Например, вы можете сохранить данные в переменные или отправить их куда-либо     }   } catch (err) {     console.error(err);   } finally {     await connection.end();   } }  getData();

const mysql = require('mysql2/promise'); async function getData() { const connection = await mysql.createConnection({ host: "127.0.0.1", user: "root", password: "", database: "mania" }); try { const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d'); for (let row of rows) { console.log(`ID: ${row['birza']}, NAME: ${row['symbol']}, PRICE: ${row['price']}`); // Теперь вы можете работать с каждой строкой данных как с объектом // Например, вы можете сохранить данные в переменные или отправить их куда-либо } } catch (err) { console.error(err); } finally { await connection.end(); } } getData();

Этот код создает асинхронную функцию getData, которая устанавливает соединение с базой данных, выполняет запрос и выводит результаты. Каждая строка результатов обрабатывается в цикле, и вы можете сохранять данные в переменные или использовать их для других операций внутри цикла.

Обратите внимание, что для использования mysql2/promise вам нужно будет установить этот пакет через npm:

npm install mysql2

Использование async/await позволяет писать асинхронный код, который выглядит как синхронный, и делает его более читаемым и удобным для отладки.

  • Спасибо. mysql2/promise инсталлировал.
    // Теперь вы можете работать с каждой строкой данных как с объектом
    // Например, вы можете сохранить данные в переменные или отправить их куда-либо

    /// приведите примеры если вас не затруднит. У меня как раз проблема состоит в этом.
    Как мне вывести эти данные в переменные за пределы функции

    let id some1=570; let name1 =someone; let sumAGEres1=0.4567;

  • Чтобы сохранить данные из базы данных в переменные вне функции async, вы можете использовать глобальные переменные или возвращать данные из функции и обрабатывать их дальше. Вот пример с использованием глобальных переменных:
    const mysql = require('mysql2/promise'); let globalData = []; // Глобальный массив для хранения данных  async function getData() {   const connection = await mysql.createConnection({     host: "127.0.0.1",     user: "root",     password: "",     database: "mania"   });    try {     const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');     globalData = rows.map(row => {       return {         id: row['birza'],         name: row['symbol'],         price: row['price']       };     });   } catch (err) {     console.error(err);   } finally {     await connection.end();   } }  getData().then(() => {   // После завершения функции getData, данные будут доступны в globalData   console.log(globalData); // Выводим данные в консоль   // Теперь вы можете использовать globalData как угодно });

    const mysql = require('mysql2/promise'); let globalData = []; // Глобальный массив для хранения данных async function getData() { const connection = await mysql.createConnection({ host: "127.0.0.1", user: "root", password: "", database: "mania" }); try { const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d'); globalData = rows.map(row => { return { id: row['birza'], name: row['symbol'], price: row['price'] }; }); } catch (err) { console.error(err); } finally { await connection.end(); } } getData().then(() => { // После завершения функции getData, данные будут доступны в globalData console.log(globalData); // Выводим данные в консоль // Теперь вы можете использовать globalData как угодно });

    В этом примере данные из базы данных сохраняются в глобальный массив globalDataпосле выполнения функции getData. Затем вы можете использовать этот массив в любом месте вашего кода.

    Если вы хотите избежать использования глобальных переменных, вы можете возвращать данные из функции и обрабатывать их после вызова функции:

    async function getData() {   // ... код функции getData ...   return globalData; // Возвращаем данные }  getData().then((data) => {   // Обрабатываем данные после вызова функции   console.log(data); // Выводим данные в консоль });

    async function getData() { // ... код функции getData ... return globalData; // Возвращаем данные } getData().then((data) => { // Обрабатываем данные после вызова функции console.log(data); // Выводим данные в консоль });

    В этом случае dataбудет содержать данные, возвращенные функцией getData, и вы можете работать с ними так, как вам нужно. Это более предпочтительный способ работы с асинхронными данными, так как он не зависит от глобального состояния.

  • Sun2790, если решение помогло, просьба отметить.
  • Azamat Lee, Спасибо.
    Получил массив данных
    [
    { id: 570, name: 'someone', price: '0.45678977000000' },
    { id: 571, name: 'someone2', price: '0.45678977000000' },
    { id: 571, name: 'dd', price: '0.45678977000000' },
    { id: 571, name: 'dd', price: '5.45678977000000' }
    ]
    // Опять же. Как мне сделать следующее
    let XX =0.45678977000000;
    Сама логика
    У меня изначально обьявлено XX = 0;
    Я должен подключиться к БД , найти someone2 и его price
    и тогда XX = price;
  • const mysql = require('mysql2/promise');  let XX = 0; // Изначально объявленная переменная  async function getData() {   const connection = await mysql.createConnection({     host: "127.0.0.1",     user: "root",     password: "",     database: "mania"   });    try {     const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');     // Обработка полученных данных     const user = rows.find(user => user.name === 'someone2');     if (user) {       XX = parseFloat(user.price);     }     return rows; // Возвращаем все строки для дальнейшего использования   } catch (err) {     console.error(err);   } finally {     await connection.end();   } }  getData().then((data) => {   // Данные доступны здесь, в переменной data   console.log(XX); // Выводим значение XX, которое было обновлено функцией getData });

    const mysql = require('mysql2/promise'); let XX = 0; // Изначально объявленная переменная async function getData() { const connection = await mysql.createConnection({ host: "127.0.0.1", user: "root", password: "", database: "mania" }); try { const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d'); // Обработка полученных данных const user = rows.find(user => user.name === 'someone2'); if (user) { XX = parseFloat(user.price); } return rows; // Возвращаем все строки для дальнейшего использования } catch (err) { console.error(err); } finally { await connection.end(); } } getData().then((data) => { // Данные доступны здесь, в переменной data console.log(XX); // Выводим значение XX, которое было обновлено функцией getData });

  • В этом коде функция getDataасинхронно получает данные из базы данных и ищет пользователя с именем someone2. Если такой пользователь найден, его priceприсваивается переменной XX. После выполнения функции getData, данные доступны в переменной data, и вы можете использовать их по своему усмотрению. Обратите внимание, что XXобновляется внутри функции getDataи выводится после того, как функция завершает свою работу.
  • Sun2790, Тоесть.
    изначально в коде стоит
    let someone2=0;
    Я добавляю в эту таблицу данные из вебсокета.
    { id: 571, name: 'someone2', price: '0.45678977000000' },
    читаем данные
    и теперь соответственно
    let someone2'=0.45678977000000;
  • Да, вы правильно поняли. Если вы хотите обновить значение переменной someone2на основе данных, полученных из вебсокета, вы можете сделать это следующим образом:
    let someone2 = 0; // Изначально объявленная переменная  // Предположим, что data - это данные, полученные из вебсокета const data = { id: 571, name: 'someone2', price: '0.45678977000000' };  // Обновляем значение переменной someone2 someone2 = parseFloat(data.price);  console.log(someone2); // Выводим обновленное значение someone2

    let someone2 = 0; // Изначально объявленная переменная // Предположим, что data - это данные, полученные из вебсокета const data = { id: 571, name: 'someone2', price: '0.45678977000000' }; // Обновляем значение переменной someone2 someone2 = parseFloat(data.price); console.log(someone2); // Выводим обновленное значение someone2

    В этом примере значение priceиз объекта dataпреобразуется в число с плавающей точкой и присваивается переменной someone2. Теперь переменная someone2содержит значение 0.45678977000000. Это значение вы можете использовать в дальнейшем коде.

  • Azamat Lee,
    Спасибо.
    Тогда соответственно можно делать так?
    if (user) {
    XX = parseFloat(user.price);
    XX2 = parseFloat(user.price);
    XX3 = parseFloat(user.price);
    }
    Если у меня 1000+ таких переменных. ...
    Можно ли как ни будь сделать, чтобы это было не условие сравнения, а просто обьявление переменных, которые существуют в данной таблице. То есть мы ничего не ищем и не сравниваем, просто выводим все что есть в таблице в виде переменных. Таким образом их данные вместо =0 обновлятся на данные, которые в таблице
  • Если у вас есть большое количество переменных, которые вы хотите обновить на основе данных из таблицы, вам следует использовать структуру данных, которая позволяет хранить данные динамически, например, объект или карту (map). Вместо того чтобы создавать тысячи отдельных переменных, вы можете использовать ключи объекта или карты для представления уникальных идентификаторов, а значения - для хранения соответствующих цен.
    const prices = {}; // Объект для хранения цен  async function updatePrices() {   // Предположим, что rows - это массив данных, полученный из базы данных   const rows = [     { id: 570, name: 'someone', price: '0.45678977000000' },     { id: 571, name: 'someone2', price: '0.45678977000000' },     // ... другие записи ...   ];    // Обновляем объект prices, используя имя как ключ   rows.forEach(row => {     prices[row.name] = parseFloat(row.price);   }); }  // Вызываем функцию для обновления цен updatePrices().then(() => {   console.log(prices); // Выводим обновленные цены   // Теперь вы можете обращаться к ценам по имени, например:   console.log(prices['someone2']); // Выводит цену для 'someone2' });

    const prices = {}; // Объект для хранения цен async function updatePrices() { // Предположим, что rows - это массив данных, полученный из базы данных const rows = [ { id: 570, name: 'someone', price: '0.45678977000000' }, { id: 571, name: 'someone2', price: '0.45678977000000' }, // ... другие записи ... ]; // Обновляем объект prices, используя имя как ключ rows.forEach(row => { prices[row.name] = parseFloat(row.price); }); } // Вызываем функцию для обновления цен updatePrices().then(() => { console.log(prices); // Выводим обновленные цены // Теперь вы можете обращаться к ценам по имени, например: console.log(prices['someone2']); // Выводит цену для 'someone2' });

    Использование объекта pricesпозволяет вам избежать создания большого количества отдельных переменных и упрощает доступ к данным по ключу, который может быть именем пользователя или любым другим уникальным идентификатором. Это делает код более читаемым и легко масштабируемым.

  • Azamat Lee, По моему вы показали как раз то что нужно. Буду пробовать реализовать. Я просто еще не до конца понимаю вот это.
    async function getData() {
    // ... код функции getData ... ----->> КАКОЙ ЗДЕСЬ МОЖЕТ БЫТЬ КОД?
    return globalData; // Возвращаем данные
    }

    getData().then((data) => {
    // Обрабатываем данные после вызова функции
    console.log(data); // Выводим данные в консоль
    });

  • Azamat Lee, Написано красиво и понятно. Не могли бы вы все то, что вы написали сложить вместе в один рабочий код.
  • const mysql = require('mysql2/promise');  // Объект для хранения цен const prices = {};  async function getDataAndUpdatePrices() {   const connection = await mysql.createConnection({     host: "127.0.0.1",     user: "root",     password: "",     database: "mania"   });    try {     // Получаем данные из таблицы price_history_1d     const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d');          // Обновляем объект prices, используя имя как ключ и присваивая цену как значение     rows.forEach(row => {       prices[row.name] = parseFloat(row.price);     });   } catch (err) {     console.error(err);   } finally {     await connection.end();   } }  // Вызываем функцию и выводим результат getDataAndUpdatePrices().then(() => {   console.log(prices); // Выводим обновленные цены   // Теперь вы можете обращаться к ценам по имени, например:   console.log(prices['someone2']); // Выводит цену для 'someone2' });

    const mysql = require('mysql2/promise'); // Объект для хранения цен const prices = {}; async function getDataAndUpdatePrices() { const connection = await mysql.createConnection({ host: "127.0.0.1", user: "root", password: "", database: "mania" }); try { // Получаем данные из таблицы price_history_1d const [rows, fields] = await connection.execute('SELECT * FROM price_history_1d'); // Обновляем объект prices, используя имя как ключ и присваивая цену как значение rows.forEach(row => { prices[row.name] = parseFloat(row.price); }); } catch (err) { console.error(err); } finally { await connection.end(); } } // Вызываем функцию и выводим результат getDataAndUpdatePrices().then(() => { console.log(prices); // Выводим обновленные цены // Теперь вы можете обращаться к ценам по имени, например: console.log(prices['someone2']); // Выводит цену для 'someone2' });

  • Этот код создает асинхронную функцию getDataAndUpdatePrices, которая подключается к базе данных MySQL, извлекает данные и обновляет объект prices. Каждый ключ в объекте prices соответствует имени пользователя, а значение - это его цена, преобразованная в число с плавающей точкой. После выполнения функции, вы можете использовать объект prices для доступа к ценам пользователей по их именам.
  • Azamat Lee, Могу ли я здесь использовать постоянное соединение pools? Или мы открываем и закрываем
  • Да, вы можете использовать пул соединений (connection pool) в MySQL для управления открытыми соединениями с базой данных. Пул соединений позволяет вам повторно использовать существующие соединения и уменьшить накладные расходы на открытие и закрытие соединений, что особенно полезно при высокой нагрузке на сервер.
    const mysql = require('mysql2/promise');  // Создание пула соединений const pool = mysql.createPool({   host: '127.0.0.1',   user: 'root',   password: '',   database: 'mania',   waitForConnections: true,   connectionLimit: 10,   queueLimit: 0 });  async function getDataFromDb() {   // Получение соединения из пула   const connection = await pool.getConnection();    try {     const [rows, fields] = await connection.query('SELECT * FROM price_history_1d');     // Обработка результатов запроса     // ...   } catch (err) {     console.error(err);   } finally {     // Возвращение соединения в пул     connection.release();   } }  // Вызов функции для работы с данными getDataFromDb();

    const mysql = require('mysql2/promise'); // Создание пула соединений const pool = mysql.createPool({ host: '127.0.0.1', user: 'root', password: '', database: 'mania', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); async function getDataFromDb() { // Получение соединения из пула const connection = await pool.getConnection(); try { const [rows, fields] = await connection.query('SELECT * FROM price_history_1d'); // Обработка результатов запроса // ... } catch (err) { console.error(err); } finally { // Возвращение соединения в пул connection.release(); } } // Вызов функции для работы с данными getDataFromDb();

    В этом коде создается пул соединений, который управляет соединениями с базой данных. Когда вам нужно выполнить запрос, вы получаете соединение из пула, выполняете запрос, а затем возвращаете соединение обратно в пул. Это позволяет эффективно использовать ресурсы и улучшить производительность приложения.

  • Azamat Lee, Остается все то же самое, только создаем пул и вместо закрытия возвращаем в пул.
    Вот такой момент.
    Когда я добавлял данные в эту таблицу с ценами - я делал так ---->
    Это на модуле MYSQL
    Я добавлял если его нет. А если есть то обновлял
    Как теперь с mysql2/promise
    ---> Добавить если его НЕТ. А если он есть то НЕ добавляем. А именно. Исключить добавление символа , если он уже есть в таблице.

    let ss='dd';

    /// добавляем символ в бд и данные. Если его нет, то добавим. Если он есть - обновим значения.
    let newUser = {
    birza:'571',
    symbol:ss,
    date_day:'22.07.2023',
    price:'05.45678977'
    }

    conn.query('INSERT INTO price_history_1d SET ? ON DUPLICATE KEY UPDATE ?', [newUser, newUser, newUser, newUser], (err,rows) => {
    if(err) {
    return console.log('ошибка:' + err.message);
    }
    });

  • const mysql = require('mysql2/promise');  // Создание пула соединений const pool = mysql.createPool({   host: '127.0.0.1',   user: 'root',   password: '',   database: 'mania',   waitForConnections: true,   connectionLimit: 10,   queueLimit: 0 });  // Объект для хранения цен const prices = {};  async function getDataAndUpdatePrices() {   // Получение соединения из пула   const connection = await pool.getConnection();    try {     // Получаем данные из таблицы price_history_1d     const [rows, fields] = await connection.query('SELECT * FROM price_history_1d');          // Обновляем объект prices, используя имя как ключ и присваивая цену как значение     rows.forEach(row => {       prices[row.name] = parseFloat(row.price);     });   } catch (err) {     console.error(err);   } finally {     // Возвращение соединения в пул     connection.release();   } }  // Вызываем функцию и выводим результат getDataAndUpdatePrices().then(() => {   console.log(prices); // Выводим обновленные цены   // Теперь вы можете обращаться к ценам по имени, например:   console.log(prices['someone2']); // Выводит цену для 'someone2' });  // Добавление или обновление записи в таблице async function addOrUpdateUser(newUser) {   try {     const connection = await pool.getConnection();     try {       const sql = 'INSERT INTO price_history_1d SET ? ON DUPLICATE KEY UPDATE ?';       const [rows, fields] = await connection.query(sql, [newUser, newUser]);       console.log(rows); // Вывод результата операции     } finally {       connection.release();     }   } catch (err) {     console.error('Ошибка: ' + err.message);   } }  // Объект с данными для добавления или обновления let newUser = {   birza: '571',   symbol: 'dd',   date_day: '22.07.2023',   price: '05.45678977' };  // Вызов функции для добавления или обновления пользователя addOrUpdateUser(newUser);

    const mysql = require('mysql2/promise'); // Создание пула соединений const pool = mysql.createPool({ host: '127.0.0.1', user: 'root', password: '', database: 'mania', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); // Объект для хранения цен const prices = {}; async function getDataAndUpdatePrices() { // Получение соединения из пула const connection = await pool.getConnection(); try { // Получаем данные из таблицы price_history_1d const [rows, fields] = await connection.query('SELECT * FROM price_history_1d'); // Обновляем объект prices, используя имя как ключ и присваивая цену как значение rows.forEach(row => { prices[row.name] = parseFloat(row.price); }); } catch (err) { console.error(err); } finally { // Возвращение соединения в пул connection.release(); } } // Вызываем функцию и выводим результат getDataAndUpdatePrices().then(() => { console.log(prices); // Выводим обновленные цены // Теперь вы можете обращаться к ценам по имени, например: console.log(prices['someone2']); // Выводит цену для 'someone2' }); // Добавление или обновление записи в таблице async function addOrUpdateUser(newUser) { try { const connection = await pool.getConnection(); try { const sql = 'INSERT INTO price_history_1d SET ? ON DUPLICATE KEY UPDATE ?'; const [rows, fields] = await connection.query(sql, [newUser, newUser]); console.log(rows); // Вывод результата операции } finally { connection.release(); } } catch (err) { console.error('Ошибка: ' + err.message); } } // Объект с данными для добавления или обновления let newUser = { birza: '571', symbol: 'dd', date_day: '22.07.2023', price: '05.45678977' }; // Вызов функции для добавления или обновления пользователя addOrUpdateUser(newUser);

  • Azamat Lee,
    Про глобальные переменные. Я получил массив. Далее запутался.
    Покажите как вывести теперь (как вы говорили в любое место. За пределы функции.

    getData().then(() => {
    // После завершения функции getData, данные будут доступны в globalData
    console.log(globalData); // Выводим данные в консоль
    // Теперь вы можете использовать globalData как угодно
    });
    Здесь я получаю массив.

  • const mysql = require('mysql2/promise');  // Создание пула соединений const pool = mysql.createPool({   host: '127.0.0.1',   user: 'root',   password: '',   database: 'mania',   waitForConnections: true,   connectionLimit: 10,   queueLimit: 0 });  // Объект для хранения цен const prices = {};  // Функция для получения данных и обновления цен async function getDataAndUpdatePrices() {   const connection = await pool.getConnection();   try {     const [rows, fields] = await connection.query('SELECT * FROM price_history_1d');     rows.forEach(row => {       prices[row.name] = parseFloat(row.price);     });   } catch (err) {     console.error(err);   } finally {     connection.release();   } }  // Функция для добавления или обновления пользователя async function addOrUpdateUser(newUser) {   const connection = await pool.getConnection();   try {     const sql = 'INSERT INTO price_history_1d (birza, symbol, date_day, price) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE price = VALUES(price)';     const [result] = await connection.execute(sql, [newUser.birza, newUser.symbol, newUser.date_day, newUser.price]);     console.log(result);   } catch (err) {     console.error('Ошибка: ' + err.message);   } finally {     connection.release();   } }  // Вызов функций getDataAndUpdatePrices().then(() => {   console.log(prices); // Выводим обновленные цены   console.log(prices['someone2']); // Выводит цену для 'someone2' });  let newUser = {   birza: '571',   symbol: 'dd',   date_day: '22.07.2023',   price: '05.45678977' };  addOrUpdateUser(newUser);  // Глобальная переменная для хранения данных let globalData = [];  // Функция для получения данных async function getData() {   // Здесь должен быть ваш код для получения данных   // Предположим, что мы получили следующий массив данных:   return [     { id: 1, name: 'Alice', price: '10.00' },     { id: 2, name: 'Bob', price: '20.00' }   ]; }  // Вызываем функцию и сохраняем результат в глобальную переменную getData().then(data => {   globalData = data;   console.log(globalData); // Выводим данные в консоль });

    const mysql = require('mysql2/promise'); // Создание пула соединений const pool = mysql.createPool({ host: '127.0.0.1', user: 'root', password: '', database: 'mania', waitForConnections: true, connectionLimit: 10, queueLimit: 0 }); // Объект для хранения цен const prices = {}; // Функция для получения данных и обновления цен async function getDataAndUpdatePrices() { const connection = await pool.getConnection(); try { const [rows, fields] = await connection.query('SELECT * FROM price_history_1d'); rows.forEach(row => { prices[row.name] = parseFloat(row.price); }); } catch (err) { console.error(err); } finally { connection.release(); } } // Функция для добавления или обновления пользователя async function addOrUpdateUser(newUser) { const connection = await pool.getConnection(); try { const sql = 'INSERT INTO price_history_1d (birza, symbol, date_day, price) VALUES (?, ?, ?, ?) ON DUPLICATE KEY UPDATE price = VALUES(price)'; const [result] = await connection.execute(sql, [newUser.birza, newUser.symbol, newUser.date_day, newUser.price]); console.log(result); } catch (err) { console.error('Ошибка: ' + err.message); } finally { connection.release(); } } // Вызов функций getDataAndUpdatePrices().then(() => { console.log(prices); // Выводим обновленные цены console.log(prices['someone2']); // Выводит цену для 'someone2' }); let newUser = { birza: '571', symbol: 'dd', date_day: '22.07.2023', price: '05.45678977' }; addOrUpdateUser(newUser); // Глобальная переменная для хранения данных let globalData = []; // Функция для получения данных async function getData() { // Здесь должен быть ваш код для получения данных // Предположим, что мы получили следующий массив данных: return [ { id: 1, name: 'Alice', price: '10.00' }, { id: 2, name: 'Bob', price: '20.00' } ]; } // Вызываем функцию и сохраняем результат в глобальную переменную getData().then(data => { globalData = data; console.log(globalData); // Выводим данные в консоль });

  • Azamat Lee, Здравствуйте. Подскажите. Мы выводим цену
    console.log(prices['someone2']); // Выводит цену для 'someone2'
    /// Как вывести цену и еще его ключь из БД, по которому ищем? Чтобы получилось someone2 = 'значение из бд'
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Павел Админов Ответ

Для того чтобы правильно вывести значения из базы данных MySQL с использованием Node.js, вам потребуется использовать модуль mysql. Вот пример того, как это можно сделать:

1. Установите модуль mysql, выполнив команду:

npm install mysql

npm install mysql

2. Подключитесь к базе данных MySQL и выполните запрос для выборки данных. Ниже приведен пример кода:

const mysql = require('mysql');
 
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'ваш_пользователь',
  password: 'ваш_пароль',
  database: 'название_бд'
});
 
connection.connect();
 
connection.query('SELECT * FROM ваша_таблица', function (error, results, fields) {
  if (error) throw error;
  console.log('Результаты запроса:', results);
});
 
connection.end();

const mysql = require('mysql'); const connection = mysql.createConnection({ host: 'localhost', user: 'ваш_пользователь', password: 'ваш_пароль', database: 'название_бд' }); connection.connect(); connection.query('SELECT * FROM ваша_таблица', function (error, results, fields) { if (error) throw error; console.log('Результаты запроса:', results); }); connection.end();

3. В этом примере мы создаем подключение к базе данных MySQL, выполняем запрос SELECT * FROM ваша_таблица и выводим результаты запроса в консоль. Вы можете адаптировать этот код под свои нужды, изменяя запрос и обработку результатов.

4. Обратите внимание, что важно обработать ошибки при выполнении запроса и закрыть соединение с базой данных после выполнения всех операций.

Надеюсь, этот пример будет полезен для вас и поможет правильно вывести значения из базы данных MySQL с использованием Node.js. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно