MongoDB,Node,Express,EJS-从后端到前端(从路由到客户端)传递数组/变量

时间:2018-12-18 10:35:00

标签: node.js mongodb express ejs

我一直在试图找到一种更好的方法将变量从后端推送到前端。现在我做这样的事情。

我有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可以通过其他方式做到吗?

1 个答案:

答案 0 :(得分:1)

ejs主要用于静态页面,如果您想构建动态页面,我会寻找像angular和react这样的单页面应用程序框架。 如果您仍然想使用ejs,则可以使用对服务器的ajax调用从数据库加载变量。 我永远不会直接从前端向数据库查询,因为那样您就无法控制服务器的安全性,请务必通过BE。

  • 还要尝试考虑是否真的需要在前端使用变量,是否可以仅使用渲染来解决问题?