MongoDB, Node, Express, EJS - передать массив / переменную из бэкэнда в веб-интерфейс (из маршрута в клиент) - PullRequest
0 голосов
/ 18 декабря 2018

Я пытался найти лучший способ передать переменную из бэкэнда в веб-интерфейс.Прямо сейчас я делаю что-то вроде этого.

У меня есть MVC-шаблон, поэтому при переходе по маршруту

app.get('/fil', middleWare.isLoggedIn, user.fil)

... через корыто-узел выполняет некоторые запросы к БД и передает данные.

exports.fil = async (req, res) => {

    try {

        faktura = await Lan.find().populate('client', 'namn kundnr')

        res.status(200).render('pages/createInvoice', {
            faktura: faktura
        });

    } catch (err) {
        return res.status(500).send({
            message: err.message || "Some error occurred while retrieving datas."
        });
    };
};

... он генерирует страницу с помощью EJS (я люблю EJS) и затем передаю ее клиенту / пользователю.

И в .ejs-файл, который подается клиенту / пользователю, я добавляю следующий

<script>
    var fakturor = <%- JSON.stringify(faktura) %>;
</script>

, что означает, что я использую переменную и работаю с ней с помощью JS.

И вот тут возникает мой вопрос.Это хороший способ сделать это или есть другой способ справиться с этим?

Полагаю, одна идея состоит в том, чтобы позволить пользователю запрашивать БД прямо со страницы, но в моем случае я считаю, что на самом деле для пользователя было бы не лучше (пользователь получит как 100различные строки, которые они смогут отфильтровать, а затем загрузить файл)

Но есть ли другие способы сделать это без тега script?Как я уже сказал, я предполагаю, что можно использовать ajax-вызов от JS / клиента, но не могли бы вы сделать это как-нибудь иначе?Может ли EJS сделать это по-другому?

1 Ответ

0 голосов
/ 18 декабря 2018

ejs используется в основном для статических страниц, если вы хотите построить динамическую страницу, я бы искал одностраничную прикладную среду, такую ​​как angular и response.если вы все еще хотите использовать ejs, вы можете использовать ajax-вызов к серверу для загрузки переменной из БД.Я бы никогда не сделал запрос напрямую из Front end в DB, ​​потому что тогда вы не контролируете безопасность сервера, всегда проходите через BE.

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