我一直在试图找到一种更好的方法将变量从后端推送到前端。现在我做这样的事情。
我有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条不同的行他们将能够过滤并下载的文件)
但是如果没有脚本标签,还有其他方法可以做到这一点吗?就像我说的那样,我猜想可以使用JS /客户端的ajax调用,但是您可以通过其他方式进行吗? EJS可以通过其他方式做到吗?
答案 0 :(得分:1)
ejs主要用于静态页面,如果您想构建动态页面,我会寻找像angular和react这样的单页面应用程序框架。 如果您仍然想使用ejs,则可以使用对服务器的ajax调用从数据库加载变量。 我永远不会直接从前端向数据库查询,因为那样您就无法控制服务器的安全性,请务必通过BE。