Ответы пользователя по тегу Node.js
  • Как при рекурсивном вызове функции избежать, многократного вызова вложенной функций?

    Twstd
    @Twstd Автор вопроса
    Разрабатываю приложения и микросервисы на Nodejs
    В итоге решил вопрос, так
    const readline = require('readline-sync');
    const { error } = require("console");
    
    recursion();
    
    function recursion() {
        let input = readline.question("Enter number > 10\n");
        try {
            one(input);
            two(input);
        } catch {
            recursion();
        }
    }
    
    function one(input) {
        try {
            if (input < 10) throw error;
            console.log('выполняется функция one');
        } catch(err) {
            console.error('Ошибка в функции one');
            throw err;
        }
    }
    
    function two(input) {
        console.log('выполняется функция two', input);
    }
    Ответ написан
    Комментировать
  • Как реализовать структуру БД и сам бэкенд для сервиса бронирования отелей с динамическими ценами?

    Twstd
    @Twstd
    Разрабатываю приложения и микросервисы на Nodejs
    В Модели цену сделать геттером, который будет считать её динамически исходя из контекста

    Например в случае использования MongoDB и Mongoose

    const otelSchema = new Schema({
      price: Number // обычная цена
    }, {
      virtuals: {
        priceToday: {
          get() {
           // делаем что то с ценой this.price в зависимости от даты...
            return // возвращаем новую цену
          }
        }
      }
    });
    Ответ написан
    Комментировать
  • Почему при импорте функций вылезает ошибка 'is not a function'?

    Twstd
    @Twstd
    Разрабатываю приложения и микросервисы на Nodejs
    но работать всё равно не будет...
    если Вы объявляете функции внутри другой функции, и хотите получить к ним доступ из вне... то предположительно это должна быть либо функция конструктор или класс
    тогда app.js будет вот таким:
    let Func = require("./functions.js");
    let func_create = new Func();
    console.log(func_create.time());


    А если отвечать на вопрос почему выходит именно такая ошибка, то интерпретатор ищет у импортированной функции свойство time, оно не задано, то есть undefined, то есть не является функцией
    Ответ написан
    5 комментариев
  • Как получить запрос mongodb + expressjs по локальному порту?

    Twstd
    @Twstd
    Разрабатываю приложения и микросервисы на Nodejs
    Тут явно ошибка подключения к БД, я так понимаю что строчка 20 уже не выполняется...
    Распространенная ошибка пользователей Windows, а у Вас я так понимаю Windows, это отсутствие папки для БД в каталоге по умолчанию C:\data\db, её нужно создать вручную.
    Ответ написан
    Комментировать
  • Как залить node js приложение на сервер?

    Twstd
    @Twstd
    Разрабатываю приложения и микросервисы на Nodejs
    Можно разделить процесс на две части:
    1. настройка операционной системы
    2. установка и настройка окружения для работы приложения


    Настройка операционной системы
    Судя по ссылке, это Ubuntu...
    • создать пользователя и дать ему необходимые права. Отключить root
    • обновить все пакеты до последних версий sudo apt update && sudo apt upgrade


    установка и настройка окружения для работы приложения

    • Установить и запустить сервер БД
    • Определить место в каталоге где будет находиться приложение и скопировать его туда с помощью git clone
    • Установить все зависимости из приложения, находясь в папке приложения... npm i
    • Определиться с процесс менеджером, обычно это pm2, но есть и другие. Он будет следить, чтобы приложение было всегда онлайн т.д.


    обычно этого достаточно для начала...

    url приложения будет IP адрес самого сервера + номер порта, который будет указан в самом приложении Nodejs.
    http://IP сервера: номер порта
    Номера порта: 80 - для http
    Номер порта: 443 - для https
    по умолчанию Nodejs использует порт 3000, если он запущен локально...

    можно привязать IP адрес к доменному имени, тогда приложение будет доступно по этому имени

    Так же не лишним будет установить и настроить обратный прокси nginx, но на этапе разработки можно и без него...
    Ответ написан
    Комментировать