【问题标题】:The "right way" to load, crunch and pass variables from Express to Jade从 Express 到 Jade 加载、处理和传递变量的“正确方法”
【发布时间】:2013-09-20 13:43:52
【问题描述】:

我正在 Express 中构建一个应用程序。在其中一个视图中,登录的超级管理员能够查看所有可用的客户端/用户。在这个视图中,我正在从我的 MongoDB/Mongoose 中加载一堆客户端数据,其中很简单:

app.get('/superadmin', function(req, res) {    
  Client.find({}, '_id company monthly_cost sms_cost', function (err, docs) ...

正如您在上面看到的,我只从查询中选择了我需要的值。这四个是:“_id”、“company”、“monthly_cost”和“sms_cost”

从“_id”中,我可以使用 .getTimestamp() 获取“创建日期”,但此函数返回的 Dateobject 有点复杂。我需要一个更简单的日期,例如:(YYYY-MM-DD)。我正在考虑使用像 dateformat 这样的小型节点插件,或者可能编写一个非常简单的函数,从 IsoDate 对象中提取 YYYY、MM 和 DD 并将其保存在一个新的变量/数组中

现在回答我的问题:

Q1) WHERE 实际上是该代码的正确位置?我目前将它放在上面的路由处理程序中......因此它将在上面的代码下方。我认为这主要是根据 MVC 模式的正确方法。我在想我不想把这段代码放在 Jade 视图模板中?

Q2) 我应该以什么形式保存这些数据以及我应该如何将它传递给 Jade。我是否应该以某种方式将其添加到“文档”数据中……也就是说,我从数据库中提取的数据。或者我应该把这个 creationDate 放在一个单独的数组中,我将它与原始 DB 数据并排传递给玉。

希望我的问题足够清楚!

【问题讨论】:

    标签: node.js mongodb express mongoose pug


    【解决方案1】:

    第一季度: 如果您的 Mongoose 查询完全依赖于您的路线 /superadmin,那么这正是放置代码的正确位置。如果您在不同的路由或函数中使用相同的 sn-p,则不妨将其包装在一个函数中,该函数可被所有相关路由访问。但不要忘记包装reqres 和其他必需的变量。在回调中进行计算,并仅使用 Jade 来表示数据。

    第二季度: “保存”是什么意思?当您已经遍历每个文档以进行计算和转换时,请为每个文档创建一个额外的字段 creationDate,然后将 docs 作为单个参数传递给 Jade 文件。

    【讨论】:

    • 我已经尝试将新数据添加到查询的数据中......但由于某种原因这不起作用: for (var i = 0, tot=docs.length; i
    • 或者 wai,这似乎有效。新字段在那里,我可以在 Jade 中使用它......但是当我用 console.log(docs) 输出“文档”时;在for循环之后,字段“createdDate”没有输出......我不知道为什么......
    • 是的,你是对的。那可能行不通。当我考虑到这一点时,我强烈推荐 virtuals 用于您的目的:mongoosejs.com/docs/2.7.x/docs/virtuals.html
    猜你喜欢
    • 1970-01-01
    • 2016-10-18
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多