Ответы пользователя по тегу JavaScript
  • Как использовать fetchTickers с параметром в CCXT?

    Kwinston
    @Kwinston
    Fullstack Web3 Developer
    const ccxt = require ('ccxt')
    const exchange = new ccxt.bitfinex ()

    Для начала вынеси строки импорта ccxt и определения биржи для работы на верхний уровень, их не нужно определять в функции ответа на сообщения, иначе это будет происходить каждый раз когда будет вызвана команда "Курс валют".

    if (exchange.has['fetchTicker'])
    Убери эту проверку в ccxt у биржи bitfenix есть метод fetchTicker, не нужно проверять его наличие. Этот пример просто указан в документации ибо не у всех бирж реализован такой метод.

    exchange.fetchTicker ('BTC/USD','info = {last_price}')

    В примере документации вторым аргументом как params передается объект, не стоит передавать в него строку. CCXT типизирована и можно залезть внутрь функции fetchTicker и посмотреть какие типы должны быть у аргументов.

    Как вывести не всю информацию о курсе, а только цену, например из info:

    Смотри, вот какие данные хранятся в info, просто доставай их оттуда:
    info: {
      mid: '16552.5',  // средняя цена между минимальной покупке/продажи
      bid: '16552.0',  // цена моментальной продажи
      ask: '16553.0',  // цена моментальной покупки
      last_price: '16554.0',  // цена последней сделки
      low: '16493.0',  // минимальная цена за 24 часа
      high: '16797.0',  // максимальная цена за 24 часа
      volume: '1153.23504823',  // объем торгов в BTC за 24 часа
      timestamp: '1672263150.0189922'  // время запроса информации
    }
    Ответ написан
    Комментировать
  • Почему не берется id товара при удалении его с корзины?

    Kwinston
    @Kwinston
    Fullstack Web3 Developer
    Но когда я перезагружаю страницу, всё нормально удаляется из бэка и из корзины на фронте.

    Это очень странно что с бэка удаляется, поскольку ты отправляешь некорректный запрос, это можно понять по его URL, вместо id передается undefined. Я бы еще проверил, а добавляется ли товар вообще в БД на бэке

    Вот функция которая на onClick кнопки удаления товара с корзины повешена:

    Я бы рекомендовал улучшить эту функцию следующим образом:
    const onRemoveItem = async (id) => {
        try {
            await axios.delete(`https://(не смотри на мое апи).mockapi.io/cart/${id}`);
            setCartItems((prev) => prev.filter((item) => item.id !== id));
        } catch (error) {
            /* уведомлять пользователя об ошибке или логировать ее как-нибудь */
        }
      }

    Тем самым мы для начала ждем ответа сервера а потом уже в случае успешного ответа сервера, удаляем карточку товара на фронт.
    Ответ написан
    Комментировать