Как передать данные JSON из Node js route в скрипт в html-файле? - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь заполнить раскрывающийся список моего HTML-индекса данными из коллекции mongodb.У меня есть заполненный код, который выглядит следующим образом:

    <script>
        document.addEventListener("DOMContentLoaded", function() {
          for (element in mongoData){
            var option = document.createElement('option');
            option.innerHTML = element;
            option.value = element;
            document.getElementById('Active_Sessions').append(option);
          }
        });
      </script>

и в app.js мой маршрут выглядит следующим образом:

    app.use("/",(req,res) => {
        res.sendFile(__dirname + "/index.html")
     })

Мне нужно передать объект JSON 'mongoData' вэтот HTML, и я не уверен, как это сделать.«MongoData» будет JSON некоторых данных, собранных из данной коллекции.

Одно из решений, о котором я думал, но еще не реализовал, - записать эти mongodata в текстовый файл, файл CSV или что-то в этом роде.как это из app.js, а затем прочитайте файл из моего заполненного скрипта.Я чувствую, что это было бы плохо и не очень безопасно.

Другой вариант, о котором я подумал, это попытаться подключиться к серверу mongoose в заполненном скрипте, но когда я попробовал это, это не сработало.поэтому я вроде бы предположил, что это невозможно.

Что-то, на что я обращал внимание перед публикацией, - это использование res.render () для отправки JSON, но я не совсем понимаю, что такое шаблоны иЯ бы предпочел не узнавать обо всем этом, если бы я мог избежать этого.

Есть ли элегантное решение для этого?

1 Ответ

0 голосов
/ 09 мая 2018

Вы бы изменили свои данные на своем сервере, например, через шаблонизатор.

Или вы можете построить нечто подобное, чтобы сделать то же самое. Фиктивная логика:

  1. Readfile с модулем fs.
  2. Используйте регулярные выражения для замены / вставки вашего контента (например, из вашего объекта).
  3. Отправить результат клиенту.

ОБНОВЛЕНИЕ : простой пример пользовательского шаблонизатора.

Сначала простой HTML-файл - index.html (обратите внимание, $ replace_me):

<html>
  <body>
    <div class="circle">
      $replace_me

      <div class="square">
        something else
      </div>
    </div>
  <body>
</html>

На нашем сервере узлов мы можем сделать что-то вроде этого:

var fs = require('fs');

//used sync for clean demo, use async in production
var _html_cont = fs.readFileSync('index.html', {encoding: 'utf-8'});

//dynamic content to replace
var _repl = "<div>I am new!</div>";

//actually replace it
var _im_regex = new RegExp("\\$replace_me", "gm");
_html_cont = _html_cont.replace(_im_regex, _repl);

 //send result to client
 res.writeHead(200, { 'content-type': 'text/html' });
 res.write(_html_cont);
 res.end();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...