2017-02-04 19 views
0

Я новичок в Node.js 6 и Express 4. Мне интересно, возможно ли что-то подобное? Это указывает на то, что в маршрутизации узла могут использоваться маски. Возможно ли иметь приложение с поддержкой базы данных, которое является динамическим с маршрутами и представлениями? Что я имею в виду что-то вроде следующего URL,NodeJS 6.x Express 4.x Динамические маршруты и динамические представления PostgreSQL 9.x с динамическим SQL

  1. /< - может быть что-нибудь
  2. /хуг
  3. /15/а/хуг

Так узел/экспресс бы попал в базу данных URL-адрес /, а затем динамически принимать значения в строке для поиска/поиска и выводить путь к странице шаблона представления с SQL-запросом, готовым для использования в файле шаблона вида, который является локальным на диске. Я знаю, что они не способ динамически генерировать html, потому что SQL будет отличаться для каждого URL шаблона представления. Таким образом, это будет жестким файлом с движком шаблонов, таким как рули и т. Д. Кажется, узел/экспресс может динамически обрабатывать маршруты «на лету», поэтому это должно быть возможно, я думаю.

Поэтому, когда узел/экспресс получает URL-адрес/xyz, он перейдет в базу данных, просмотрит URL-адрес, а затем выведет SQL в строке поиска и вызовет путь к шаблону представления для этой строки, найденной в базе данных , База данных может быть json-файлом, а не sql. Не знаю, что будет быстрее, поскольку оба будут в ОЗУ.

Мне интересно, если кто-нибудь когда-либо пробовал это? Если у них есть что-то подобное или кто-нибудь знает о шаблоне с такой настройкой на github? Я вижу несколько проблем.

  1. Обработка ошибок 404
  2. базы данных пулы, способы, чтобы уменьшить открытые и закрытие сокетов. Поэтому, когда 100 запросов URL не будут иметь 1000 открытых и закрытых запросов сокетов. Он будет иметь только один открытый запрос на сокет и выполнить весь SQL через этот сокет. Или имеют 64 гнезда для 64-процессорной системы. Не открывать и закрывать сокет каждый раз, когда вы нажимаете на URL.
  3. Запустить приложение под кластеризацией PM2, чтобы он использовал весь процессор не только один процессор.

Я хотел бы любой вход. Как вы справитесь с перечисленными проблемами или шаблонами, если это уже не так?

ответ

0

Что вы описываете, это RESTful API. Как правило, самый первый элемент в URL-адресе является статичным, если вы обслуживаете веб-страницы, так как иначе вы не сможете ничего обслуживать из корневого пути, например, как вы заметили, страницы с ошибками. Таким образом, вы обычно увидите URL-адреса, такие как www.mystore.com/products/1234.

Ваши # 2 и № 3 не имеют никакого отношения к маршрутизации. Пулы соединений не работают, как вы думаете: речь идет о повторном использовании и управлении жизненными циклами многих подключений, которые при необходимости выбираются и публикуются приложением. Вы, , не должны хотите отправить весь ваш SQL по одному сокету (поскольку долговременный запрос остановит все остальное до его завершения), а количество открытых сокетов не ограничено количеством процессоров, которые у вас есть.

Clustering как можно более возможно с помощью приложения RESTful, так как оно не является RESTful.

+0

Я действительно смотрел на отдых, но я не мог видеть, как можно было бы изменить отдых, используя шаблонные представления, такие как ejs, handlebars в представлениях из базы данных. Таким образом, у каждого представления будет свой собственный запрос к базе данных для вывода.Как я понимаю, отдых - это вывод json или данных обратно в запрашивающую службу. Поэтому я как-то понимаю, о чем вы говорите, но я не вижу, как заставить его работать динамически через URL/Database. Я пытаюсь уйти от жесткого кодирования любого URL-адреса в узле. Он попадет в базу данных для всех URL-адресов. Приложение будет почти 100% базы данных с кодом узла будет очень мало. Что мне нужно. – user2777145

+0

Рендеринг JSON или XML - только один возможный выход для REST API. Если ваш слушатель отвечает веб-страницей через «res.render» Express, вы будете выводить веб-страницу, и вы можете подключить любой механизм шаблонов, в котором вы хотите. Что касается не добавления * любых * URL-адресов, вы можете просто прослушать/обозначить путь, запустить соответствующие запросы, найти подходящий шаблон и отобрать все, но из-за ручной работы из-за этого вы в первую очередь запускаете Express. – dmfay

+0

Я смотрю, могу ли я сделать что-то, не имея тонны файлов повсюду для маршрутов. Подстановочный знак с выражением и поиском базы данных не работает так, как я ожидаю. Затем, делая выбор и выводя это в механизм шаблона res.render с запросом на доступ, я не могу работать. Поэтому я начинаю думать о том, что жесткий диск с URL-адресами -> SQL-> Template View невозможен. Итак, все, что у вас есть, - app.get ('*', dynamicURL), и это все, что у вас есть для всех ваших маршрутов в узле. Невозможно сделать ... – user2777145