我正在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
,那么这正是放置代码的正确位置。如果您在不同的路由或函数中使用相同的代码片段,则不妨将其包装在相关每个路由都可以访问的函数中。但不要忘记也包装req
、res
和其他必需变量。将计算结果包含在回调中,并仅将 Jade 用于表示数据。
问2:"保存"是什么意思?当您已经遍历每个文档以执行计算和转换时,请为每个文档创建一个额外的字段creationDate
,然后docs
作为单个参数传递给 Jade 文件。