Я пытался найти лучший способ передать переменную из бэкэнда в веб-интерфейс.Прямо сейчас я делаю что-то вроде этого.
У меня есть 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 сделать это по-другому?