Ответы пользователя по тегу Node.js
  • Как перевести mysql объект в строку?

    Robur
    @Robur
    Знаю больше чем это необходимо
    db.query наверняка асинхронная и не возвращает вам ничего сразу, в лучшем случае промис.
    Дождитесь получения данных из базы, потом с ними делайте что-то.
    Ответ написан
  • Html шаблонизатор для email оповещений?

    Robur
    @Robur
    Знаю больше чем это необходимо
    вот этот импользуем https://www.npmjs.com/package/email-templates
    Ответ написан
    Комментировать
  • Как правильно эффективно подключаться к MongoDB параллельно?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Можно. Более того - нужна хорошая причина чтобы иметь больше чем 1 клиента в приложении. клиент внутри себя держит пул соединений который используется для одновременных запросов, этот пул можно настраивать под свои нужды
    Ответ написан
    2 комментария
  • Как вести версионирование в package.json?

    Robur
    @Robur
    Знаю больше чем это необходимо
    мы решали вот этим: https://github.com/conventional-changelog/standard...
    без разницы как работа в гите организована, главное коммиты правильно помечать, где фича где фикс и тд
    Ответ написан
    Комментировать
  • Есть ли возможность подставлять произвольные данные в пользовательский js?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Вы перемудриваете. Любой шаблонизатор вам поможет - отнеситесь к этому файлу как к текстовому.
    Сейчас часто используется env-переменные для того чтобы конфигурить JS при сборке
    let allVideo = new window.VPlayer(process.env.SERVER_URL);

    дальше перед сборкой SERVER_URL ставится в нужное значение одним из тонны способов (это реальная переменная окружения) - на выходе вы получаете js-файл с подставленной строкой.
    Это удобно и супер гибко.

    распространенная практика при сборке вебпаком, не знаю умеет ли gulp такое но готов поспорить что да.
    Ответ написан
  • Grapqhl backend и React native app. Стоит-ли объединять?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Нормально вам тимлид говорит, если сделать это грамотно. Single Source Of Truth рулит.

    - разные проекты вполне могут оставаться разными проектами используя один и тот же общий для обоих код. Способов это сделать много. монорепа, модуль, реестр схемы например.
    - у вас уже взаимная зависимость - общий GraphQL API. Вы вряд ли сможете поменять схему в одном проекте и оставить её старой в другом. Возможность хранить схему отдельно и менять независимо - это не гибкость, это прямая дорога к тоннам проблем и куче потерянного времени. Вас не смущает то что каждый раз меняя схему в одном месте надо обязательно сходить и поменять ее в другом чтобы они были всегда синхронизированы, и если вы этого не сделаете/забудете/опечатаетесь/не так скопипастите то что-то где-то обязательно сломается? Именно в этот момент стоило бы почувствовать что-то неладное.
    - если вы не видели чего-то - это не значит что то, чего вы не видели плохо, а то что видели - хорошо.

    В общем, делать стоит - главное делать грамотно. Если вы сейчас весь код в одну кучу свалите то конечно ничего хорошего не выйдет.
    Ответ написан
    Комментировать
  • Как создать микросервисы на ноде с монолита?

    Robur
    @Robur
    Знаю больше чем это необходимо
    хороший ресурс с кучей текста, примерами и информацией разного уровня сложности: https://microservices.io/
    начините с него
    Ответ написан
    Комментировать
  • Почему данный post запрос выдает 404, хотя роутинг маршрута есть?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Путь у вас не /tasks/${id} а /users/tasks/${id}
    Вот это еще почитайте: https://expressjs.com/en/guide/debugging.html
    Ответ написан
    Комментировать
  • Стоит ли реализовывать такой подход и если да, то как скомпилировать?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Возможно, но судя по вопросам вам еще во многом предстоит разобраться. Вряд ли вам кто-то будет тут писать конфиги nginx и вебпака.
    Гуглите react/vue production build.
    и скорее всего еще пригодится роутинг в аппах, history api и как настроить nginx чтобы он по всем роутам которые есть в приложении отдавал нужный js, а при обращении к css/картинкам - отдавал их.
    еще есть codesplitting, чтобы грузились только нужные части приложения но для начала сделайте все одним js файлом, чтобы понять как оно все работает.
    Ответ написан
    2 комментария
  • Какую библиотеку запросов использовать в node.js?

    Robur
    @Robur
    Знаю больше чем это необходимо
    request-promise обертка над request, у которого есть работа с прокси
    https://github.com/request/request#proxies
    Ответ написан
    Комментировать
  • Где хранить данные пользователя?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Есть два варианта:

    1) хранить роль там же где у вас хранится пользователь (вы не указали откуда он берется - локальная бд, oauth, хз что еще) и получать роль как атрибут юзера в req.user
    2) сделать таблицу в своей базе где хранить роли для каждого пользователя - для каждого id хранить роли. при необходимости получить роль делать запрос в базу с id из req.user, получать роли и делать то что нужно.

    UI может получать роли или из токена (если например это OAuth/OpenID) или делать запрос на сервер при загрузке приложения/логине и получать роли оттуда.
    Ответ написан
    2 комментария
  • Как в WebStorm правильно использовать vue + node js в одном проекте? И несколько других вопросов по тематике?

    Robur
    @Robur
    Знаю больше чем это необходимо
    1) очень странная штука - у вас гит сам по себе работает? Лучше создавать проекты через терминал, а не встроенными в вебшторм мастерами. По старинке - создайте папку, сделайте репу, инициализируйте npm, и все такое
    2) нормально. Располагаться на сервере будет как вашей душе угодно. Хоть на разных серверах.
    3) чтобы nodejs приложение работало нужна нода. Чтобы работало vue приложение - проще всего создать через https://cli.vuejs.org/ - там все будет уже для разработки вместе с вебсервером. Отдельный вебсервер надо только для продакшена.

    А гуглить все же полезно.
    Ответ написан
    Комментировать
  • Как создавать приложения на Electron без интернета?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Если нет интернета - откуда вы все это возьмете?
    Если у вас есть интернет где-то в другом месте - то сделайте там все нужные npm install, потом скопируйте папку node_modules - там будет все нужное,
    на том компе где нет интернета достаточно просто node_modules скопировать, ничего устанавливать не нужно.
    Ответ написан
    5 комментариев
  • Как переделать асинхронный код, в синхронный?

    Robur
    @Robur
    Знаю больше чем это необходимо
    синхронным вы его можете сделать только если уберете все асинхронное (horseman) но тогда этот код будет бесполезен.
    Вам нужна не синхронность а правильный порядок.
    Используйте либо promise chaining, либо async/await в цикле вместо forEach (если phantomjs поддерживает это).
    Ответ написан
    Комментировать
  • Работа с сессиями и токенами для аутентификации?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Возьмите что-то готовое, passport.js например
    Ответ написан
    Комментировать
  • Как сделать Web Socket соединение через прокси?

    Robur
    @Robur
    Знаю больше чем это необходимо
    там же куча примеров.
    https://www.npmjs.com/package/ws#usage-examples
    Ответ написан
    Комментировать
  • Что лучше - много маленьких запросов или один, но большой?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Можно и так и так, смотря с какой стороны лучше.
    маленькие пакеты надежнее, если что-то случится с большим (например пока его собирали, инет упал и нельзя отправить) - больше данных потеряете. Если у вас вебсокет то расходы на соединение не такие большие.
    Зато большой пакет скорее всего эффективнее в плане трафика (если у вас например инет мобильный)
    Можете вообще по UDP отправлять - если не страшно один - другой потерять иногда. Это будет самый эффективный способ собирать мониторинг.
    Ответ написан
    Комментировать
  • Как разрабатывают сервисы?

    Robur
    @Robur
    Знаю больше чем это необходимо
    По разному но вам подойдет OAuth или OpenID.
    Методов авторизации там больше одного, на все случаи жизни.
    Как это все работает - открывайте спеку или посты на эту тему с человеческим языком и читайте.
    Основное и главное - для этого нужен будет сервис который будет выдавать и проверять токены - либо готовый (все в гугле, например Auth0) либо свой (из опенсорса - keycloak вполне неплох)
    Остальные сервисы и приложения работают с этим сервером и доверяют ему больше чем себе. Протоколы стандартные так что библиотеки есть под все популярные языки/фреймворки.
    Правда не очень понятно зачем вам nodejs - токены JWT будет выдавать OAuth сервер. Хотя если он у вас написан на nodejs - то ок.

    Пример:
    пользователи на сайте авторизуются с именем и паролем на identity server (допустим это ваша нода), этот сервер возвращает помимо всего прочего в токене информацию о том что пользователю можно оставлять коменты (например добавлением scope: 'comment')
    php сервер получает запрос с токеном на создание коментария, открывает этот токен, проверяет у вашей ноды что этот токен настоящий (они подписаны) и если настоящий, смотрит, есть ли там scope:'comment' и если да - то создает комментарий.
    У админа будет например еще помимо возможности прокомментировать так же возможность удалить любой комментарий (например scope: 'comment-admin') - этот скоуп будет проверяться при удалении. А так же другие админские права.
    Так же comment-admin можно например дать модератору.
    Ответ написан
    3 комментария
  • Как установить приложение на сервере через nodejs?

    Robur
    @Robur
    Знаю больше чем это необходимо
    Вам нужно пойти в папку где есть package.json и там запустить npm install

    "было написано" - это где было написано?
    Ответ написан
  • Книги курсы по архитектуре микросервисов (на примере NodeJS)?

    Robur
    @Robur
    Знаю больше чем это необходимо
    5 независимых приложений это не микросервисы. Это просто 5 приложений.
    начните отсюда: https://microservices.io/
    Ответ написан
    3 комментария