加载、处理和传递变量从 Express 到 Jade "right way"



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

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

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

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

现在回答我的问题:

问题 1)实际上在哪里是这段代码的正确位置?我目前正在将其放入上面的路由处理程序中...因此,它将遵循上面的代码。我认为这主要是根据 MVC 模式的正确方法。我想我不想把这段代码放在翡翠视图模板中?

问题 2)我应该以什么形式保存这些数据,我应该如何将其传递给Jade。我应该以某种方式将其添加到"文档"数据中吗?也就是说,我从数据库中提取的数据。或者我应该把这个 creationDate 放在一个单独的数组中,我将其与原始数据库数据并排放置传递给 jade。

我希望我的问题足够清楚!

Q1:如果您的猫鼬查询完全依赖于您的路由/superadmin,那么这正是放置代码的正确位置。如果您在不同的路由或函数中使用相同的代码片段,则不妨将其包装在相关每个路由都可以访问的函数中。但不要忘记也包装reqres和其他必需变量。将计算结果包含在回调中,并仅将 Jade 用于表示数据。

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

最新更新