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

    Azamat_Lee
    @Azamat_Lee
    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); // Выводим данные в консоль
    });
    Написано
  • Как можно реализовать SQL запрос для поиска по двум столбцам одновременно с исключением некоторых столбцов из поиска?

    Azamat_Lee
    @Azamat_Lee
    В документации SQLite указано, что для исключения определенных столбцов из поиска можно использовать синтаксис с минусом перед именем столбца. Например, чтобы исключить столбец c из поиска

    SELECT a, b, c FROM data WHERE data MATCH 'Что*Тузик* -c:*';
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    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);
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Да, вы можете использовать пул соединений (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();


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

    Azamat_Lee
    @Azamat_Lee
    Для исключения столбца c из поиска в FTS5, вы можете использовать оператор NOTв сочетании с запросом MATCH. Однако, важно правильно сформировать запрос, чтобы он корректно интерпретировался. Вот пример запроса, который исключает столбец c из поиска:

    SELECT a, b, c FROM data WHERE data MATCH 'a:Что*Тузик* OR b:Что*Тузик*' AND NOT data MATCH 'c:Что*Тузик*';


    В этом запросе, мы используем MATCHдля столбцов a и b с вашим поисковым запросом, и затем исключаем результаты, где столбец c также соответствует этому запросу. Обратите внимание, что NOT применяется к всему выражению MATCH, а не к отдельным словам внутри него.
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Этот код создает асинхронную функцию getDataAndUpdatePrices, которая подключается к базе данных MySQL, извлекает данные и обновляет объект prices. Каждый ключ в объекте prices соответствует имени пользователя, а значение - это его цена, преобразованная в число с плавающей точкой. После выполнения функции, вы можете использовать объект prices для доступа к ценам пользователей по их именам.
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @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'
    });
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Если у вас есть большое количество переменных, которые вы хотите обновить на основе данных из таблицы, вам следует использовать структуру данных, которая позволяет хранить данные динамически, например, объект или карту (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'
    });


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

    Azamat_Lee
    @Azamat_Lee
    Да, вы правильно поняли. Если вы хотите обновить значение переменной 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. Это значение вы можете использовать в дальнейшем коде.
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    В этом коде функция getDataасинхронно получает данные из базы данных и ищет пользователя с именем someone2. Если такой пользователь найден, его priceприсваивается переменной XX. После выполнения функции getData, данные доступны в переменной data, и вы можете использовать их по своему усмотрению. Обратите внимание, что XXобновляется внутри функции getDataи выводится после того, как функция завершает свою работу.
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    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
    });
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Sun2790, если решение помогло, просьба отметить.
    Написано
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Чтобы сохранить данные из базы данных в переменные вне функции 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 как угодно
    });


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

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

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


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

    Azamat_Lee
    @Azamat_Lee
    Виталий Федоренко, Для работы с физическими адресами в PCIe и использования Write Combining в Windows, вам может потребоваться использовать специализированные функции драйвера устройства. Это может включать в себя создание пользовательского драйвера, который будет взаимодействовать с аппаратным обеспечением на более низком уровне, чем это возможно через стандартные API Windows.

    В документации по F1 FPGA Application Note описаны опции для работы с Write Combining в контексте FPGA через PCIe, включая использование специальной утилиты wc_perf для тестирования производительности записи в регион с Write Combining.
    Написано
  • 403 Forbidden, как обойти блокировку разработчика?

    Azamat_Lee
    @Azamat_Lee Автор вопроса
    Drno, Я бы не хотел именно здесь устроить дискуссию по этому поводу. Но абсолютно верно, 300-400 много. Виртуальный необходимый для таких клиентов стоит 6 тысяч за 3 года и безз дополнительных настроек и прочего. Не стоит оценивать всё исключительно через призму личного восприятия. Количество зарегистрированных виртуальных услуг хостинга гораздо превышает VPS. Рынок для того и создан.
  • 403 Forbidden, как обойти блокировку разработчика?

    Azamat_Lee
    @Azamat_Lee Автор вопроса
    Drno, Ну какие VPS для малого бизнеса? Люди себе виртуальный хостинг то выбирают с минимальным конфигом. Клиент потом сам себе хозяин, но наша задача упростить ему дальнейшую жизнь, а не кинуть и сказать, правительству скажите спасибо.
  • 403 Forbidden, как обойти блокировку разработчика?

    Azamat_Lee
    @Azamat_Lee Автор вопроса
    Спасибо за ответ, я даже не подумал про проксирование исключительно входящего.
  • 403 Forbidden, как обойти блокировку разработчика?

    Azamat_Lee
    @Azamat_Lee Автор вопроса
    Я уже описал, что есть путь гораздо проще через Казахстан. Тем более тут впн вам никак не поможет, сайт размещен на хостинге. Запросы идут оттуда.
  • Прокрутка до активного пункта меню при прокрутке страницы (на мобильной версии)?

    Azamat_Lee
    @Azamat_Lee Автор вопроса
    Еще раз, спасибо большое. Поменял один символ на знак больше, чтобы было похоже как у яндекса, вдруг кому-то пригодится. Для фиксации активного элемента у левой части экрана.
    if (containerRect.left + containerRect.width > activeOptionRect.left + activeOptionRect.width)