Запрос ArangoDB, не покидая страницу

Я относительно новичок в веб-разработке и большую часть этого ограниченного опыта использую ArangoDB. У меня есть базовое понимание Node.js и создание экспресс-приложений CRUD с ArangoDB в качестве базы данных.

Я дошел до того, что хотел бы иметь возможность запрашивать базу данных изнутри клиента. Скажем, я хотел бы иметь элемент типа списка данных, в котором пользователь вводит слова в строку поиска. Я хотел бы иметь возможность запрашивать базу данных оттуда, а не запрашивать базу данных для всех ее файлов до создания списка данных. Я не нашел ни одного упоминания об использовании запросов к базе данных со стороны клиента. Я не могу представить, что это невозможно. Конечно, когда я ищу Википедию через панель поиска, и она предоставляет мне варианты, я не получил весь список документов Википедии при загрузке страницы? Пожалуйста, направьте меня в правильном направлении, я не знаю, как решить эту проблему.


person Omnia87    schedule 07.03.2019    source источник
comment
Первый шаг — сделать это без ArangoDB, просто пусть ваш сервер node.js предоставляет конечную точку REST, которая позволяет клиенту выполнять поиск, а node.js выполняет эти поиски над чем-то простым, например статическим массивом. Когда вы получите эту работу, обновите эту конечную точку REST API, чтобы выполнять запросы к базе данных, где текст поиска пользователя является параметром запроса.   -  person David Thomas    schedule 08.03.2019
comment
Вы неправильно меня понимаете. Я знаю, как взаимодействовать с ArangoDB, используя запрос и ответ. Чего я не понимаю, так это того, как запросить базу данных без необходимости сначала обращаться к одной из конечных точек node.js с запросом. Как википедия это делает? Когда я загружаю Википедию, у меня появляется панель поиска, которая предлагает подсказки, когда я набираю слово. У него миллионы документов, страница не может быть загружена ссылками на несколько миллионов документов только для того, чтобы я мог получить предложения, страница никогда не загрузится.   -  person Omnia87    schedule 08.03.2019
comment
Ах, правильно. То, что вы видите, это то, что веб-страница просматривает событие onchange текстового поля, в которое вводит пользователь. Обычно он ждет около 1 секунды после прекращения ввода, затем запускает вызов REST на сервер и предоставляет введенное значение. Затем сервер возвращает полезную нагрузку, и веб-страница динамически обновляет страницу. Чтобы увидеть, как это происходит, нажмите F12 (инструменты разработчика) в браузере, посмотрите на вкладку сети. Вы увидите, как срабатывают сетевые вызовы, и они содержат то, что вы набрали, и увидите ответ.   -  person David Thomas    schedule 08.03.2019
comment
Ваша проблема ничем не отличается, настройте этот хук и заставьте вашу страницу молча запускаться в фоновом режиме на узел, когда пользователь вводит запрос, а затем подключите эту конечную точку к arangodb. Это работает удовольствие, когда вы получаете это происходит.   -  person David Thomas    schedule 08.03.2019
comment
Хорошо, это звучит здорово. Я просто не уверен, как сделать вызов node без фактического перенаправления страницы. Это возможно?   -  person Omnia87    schedule 08.03.2019
comment
Использую ли я для этого AJAX?   -  person Omnia87    schedule 08.03.2019
comment
Да все верно. Как только вы почувствуете себя комфортно и заработаете с AJAX, вернитесь и интегрируйте свои вызовы ArangoDB. Изучение того, как писать динамические веб-страницы с серверной частью REST API, — это отличный навык. Попробуйте эту ссылку, чтобы получить помощь в обучении, в зависимости от вашей технологии: pluralsight.com/search?q=ajax   -  person David Thomas    schedule 09.03.2019
comment
Спасибо @DavidThomas, вы очень помогли. Может быть, написать это как ответ? Я могу это одобрить :P   -  person Omnia87    schedule 09.03.2019


Ответы (1)


Посмотрите, как создавать динамические формы, это позволит вам выполнять вызовы в стиле AJAX из окна браузера в серверную службу REST API. Это позволит вашей серверной веб-службе собирать данные для ответа (при необходимости из ArangoDB) и отвечать этими данными, скорее всего, в формате JSON.

Затем ваш пользовательский интерфейс может принять этот ответ и динамически обновить компоненты в вашей модели DOM, чтобы пользователь мог видеть данные, введенные на страницу, без перезагрузки страницы.

https://www.pluralsight.com/search?q=ajax — отличный место для начала.

В качестве альтернативы вы можете просмотреть бесплатный контент, например https://www.youtube.com/watch?v=tNKD0kfel6o

person David Thomas    schedule 10.03.2019