Ответы пользователя по тегу Node.js
  • Как подождать, пока будет подключена База данных?

    Kentavr16
    @Kentavr16
    long cold winter
    можно использовать что-то вроде
    import express from "express";
    
    const app = express();
    const ip = "localhost";
    const port = 4000;
    
    app.get("/", (req, res) => {
      res.send("some response");
    });
    
    function startServer() {
      app.listen(port, ip, () => {
        console.log(`Сервер запущен на адресе ${ip} и порту ${port}`);
      });
    }
    
    async function connectToDatabase() {
      return new Promise((resolve, reject) => {
        setTimeout(() => resolve("ok"), 2000);
      });
    }
    
    connectToDatabase()
      .then(() => {
        startServer();
        console.log("Успешное подключение к базе данных.");
      })
      .catch((err) => {
        console.error("Не удалось подключиться к базе данных:", err);
      });

    где для коннекта к бд использовать промис
    export function connectToDatabase() {
        return new Promise((resolve, reject) => {
            pool.connect((err, client, release) => {
                if (err) {
                    console.error('Ошибка в запросе к БД (1)', err.stack);
                    release();
                    reject(err);
                    return;
                }
    
                client.query('SELECT NOW()', (err, result) => {
                    release();
                    if (err) {
                        console.error('Ошибка в запросе к БД (2)', err.stack);
                        reject(err);
                        return;
                    }
    
                    console.log('\x1b[34m%s\x1b[0m', `PostgreSQL is running (${result.rows[0].now})`);
                    resolve(pool);
                });
            });
        });
    }

    Ну и пул объявить не забыть. Хз, с обычным промисом который в первом примере, работает окей, почему с подключением к бд будет иначе? Для эксперимента ставить pg неохота. Вполне возможно что я что-то проглядел, поправьте, с серверами на ноде давно не имел дела.
    Ответ написан
    Комментировать
  • Как создать api которое возвращает React приложение для внедрения на сторонний сайт?

    Kentavr16
    @Kentavr16
    long cold winter
    основной принцип довольно простой - реакт можно просто загрузить через cdn. Значит тебе достаточно выбрать cdn-провейдера, к которому ты загрузишь свой виджет. В таком случае для клиента все будет выглядеть как подключение нескольких скриптов в шапку (реакт+то что нужно для функционирования виджета, сам виджет) и прописывания в нужном месте
    const widget = document.createElement('div');
          document.body.appendChild(widgetContainer);
               ReactDOM.render(
            <Widget />,
            widget
          );

    Можно сделать обертку над реактом, но это уже все технические моменты
    Ответ написан
    Комментировать
  • Не удалось получить данные из mongoDB, вместо данных я получаю HTML-шаблон.?

    Kentavr16
    @Kentavr16
    long cold winter
    Наконец дошло) Так как ты делаешь запрос на локальный адрес, await axios.get("/api/products") , аксиос ищет ресурс относительно корня проекта. У тебя был запущен локальный сервер разработки реакта, и он его поймал каким-то образом. Я сначала сам не понял в чем соль, но установил себе аксиос и сделал локальный запрос, с локальным путем как у тебя. Мне пришел ответ от работающего в данный момент сервера апач, также оформленный как HTML, с той только разницей что там писалось о том что ресурс не найден. Что забавно.
    Ответ написан
  • Детали работы NodeJS?

    Kentavr16
    @Kentavr16
    long cold winter
    Если вкратце и как я понимаю.
    нет,неправильно. Нода работает с джаваскриптом, но это не значит что написана нода на джС. Нужно уточнить,на чем именно, кажется видел с++. В конечном итоге стандартный сервер ноды поддерживает программно уж точно десятки тысяч подключений. Скорее упрешься в потолок железа. Для более подробного понимания ознакомься с протоколами интернета и прочей его изнанкой -tcp ip, порты, сокеты серверов и прочее.
    Итак,еще раз - джаваскрипт однопоточный,нода нет.
    Ответ написан
    Комментировать
  • Хочу создать дискорд бота, воспроизводящего музыку, но в самом начале выдаёт много ошибок и не работает. Что делать?

    Kentavr16
    @Kentavr16
    long cold winter
    Библиотеки которые вы устанавливаете устарели
    . Просто переведите ошибки - там руководство что делать
    Ответ написан
    1 комментарий