• Как получить данные из json node js?

    @shsv382
    Смотри:
    У тебя взаимодействие идет через JSON-API
    Данные по сети передаются в виде строк, соответственно при передаче объект преобразуется в строку, при приеме строка преобразуется в объект.
    То, что ты хочешь - получать данные прямо из строки. При том, что ключи (параметры) у тебя именуются не самым удобным образом (trade.data.a, trade.data.s и т.д.)
    Если коротко, то в твоем случае это почти невозможно.
    Гораздо проще как раз-таки получать данные из объекта. Если все же ты решишь парсить строку, то:
    1. ты потеряешь кучу времени
    2. возможно не придумаешь решения
    3. даже если придумаешь, это скорее всего будет настолько криво, что после тебя твой код никто не поймет и перепишет на JSON.Parse
    Ответ написан
    Комментировать
  • Почему некорректно работает округление?

    @gsaw
    Все верно сделано, просто потом использовать toFixed(8) что бы конвертировать в строку. И эту строку уже использовать в API и в UI.
    Ответ написан
    Комментировать
  • Почему некорректно работает округление?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    Добро пожаловать в мир вычислений с плавающей точкой! Это вполне нормальное поведение и оно такое везде. Если нужна высокая точность - используйте BigNumber/Decimal и т.п.
    Ответ написан
    3 комментария
  • Можно ли из значения из бд сделать переменную js?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    В вашем случаем вам следует использовать объект:
    let prices2 = { DVS: 'DVS' }
    let props = {}
    props[prices2['DVS']] = 5
    console.log(props.DVS)


    Если прям очень хочется именно переменную - то либо руками объявлять и устанавливать в нужное значение, либо писать в глобальную область видимости, что является плохой практикой:
    // Вот так делать очень не рекомендуется:
    window[prices2['DVS']] = 5  // Браузер
    global[prices2['DVS']] = 5  // Нода
    console.log(DVS)


    Есть еще третий вариант: сгенерировать исходный код с объявлениями нужных переменных и либо импортировать его как файл либо использовать eval(), что тоже не рекомендуется.
    Ответ написан
    2 комментария
  • Как правильно вывести значения из бд Mysql node js?

    Azamat_Lee
    @Azamat_Lee
    Работаю с Wordpress
    Для работы с 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();


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

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

    npm install mysql2

    Использование async/await позволяет писать асинхронный код, который выглядит как синхронный, и делает его более читаемым и удобным для отладки.
    Ответ написан
    21 комментарий
  • Как вывести значения из Mysql node js?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ранее на php я использовал mysqli_fetch_array
    С вашим запросом и на PHP вернётся одна строка.
    А вообще, тут весь код переписывать надо. Вы зачем-то используете await, хотя функция у вас в callback-стиле, используете прямую подстановку вместо подготовленного выражения.
    const mysql = require('mysql2/promise');
    const conn = await mysql.createConnection({ ... });
    const logins = ['marikas', 'tym', 'bars'];
    async function main() {
      const result = await conn.execute(
        'SELECT login, cash FROM clients WHERE login in (?)',
        [logins],
      );
      for ([login, cash] of result) {
        console.log(login, cash);
      }
    }

    Либо
    const mysql = require('mysql2');
    const conn = mysql.createConnection({ ... });
    const logins = ['marikas', 'tym', 'bars'];
    function main() {
      conn.execute(
        'SELECT login, cash FROM clients WHERE login in (?)',
        [logins],
        (err, result) => {
          if (err) {
            throw new Error(err);
          }
          for ([login, cash] of result) {
            console.log(login, cash);
          }
        },
      );
    }
    Ответ написан
  • Не видит переменную js. Как получить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ваш код работать не будет.
    Анонимная функция, в которой вы задаёте значение переменной dd будет вызвана только при наступлении события message, то есть при приходе сообщения от WS-сервера. А это сообщение может прийти как сразу же, так и через час.
    Кроме того, даже при приходе события, вызов функции будет помещён в очередь и выполнится только после завершения выполнения текущего кода, то есть когда console.log(vv) уже отработает.
    Ответ написан
    Комментировать
  • Как вывести данные из класса?

    Daemon23RUS
    @Daemon23RUS
    Что то вроде этого, добавить классу свойство respo
    class websocketBinance extends websocketCore {
           public $respo; 
    ...
                      $this->respo = $this->readSocket();
    ....
    }
    Ответ написан
    2 комментария
  • Как вывести данные из класса?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $x = new websocketBinance("wss://stream.binance.com:9443/ws/btcusdt@bookTicker");
    
    /// пробуем получить данные------------------>
    echo $x->respo;
    Ответ написан
    1 комментарий
  • Как получить переменную из callback php?

    Можно использовать замыкание. Тут фишка в том, что надо использовать в замыкании не обычную строковую переменную, а объект, потому что строковая переменная будет передана в виде копии, и не получится её изменить.
    В коде я заменил класс Client на его мок.

    class Client {
        public function miniTicker(array $callbacks) {
            foreach ($callbacks as $key => $callback) {
                $conn = 'aaaaa';
                $msg = 'msg-'.$key;
                $callback($conn, $msg);
            }
        }
    }
    
    class Message {
        public array $messages = [];
    
        public function addMessage(string $msg) {
            $this->messages[] = $msg;
        }
    }
    
    $message = new Message();
    
    $callbacks = [
        'message' => function ($conn, $msg) use ($message) {
            $message->addMessage($msg);
            
        },
        'ping' => function ($conn, $msg) use ($message) {
            $message->addMessage($msg);
        }
    ];
    
    $client = new Client();
    $client->miniTicker($callbacks);
    var_dump($message->messages);


    В результате в конце у нас выводятся все сообщения
    https://onlinephp.io/?s=tVK7boQwEOyR-IctkDDSkR8gR4...
    Ответ написан
    5 комментариев
  • Как получить переменную из callback php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Никак не получить, да и смысла в этом нет. Каллбэк может быть вызван в любое время и неоднократно. Работать с сообщением надо прямо в нём.
    Ответ написан
    1 комментарий