我正在Express中构建一个应用程序。在其中一个视图中,登录的Superadmin能够查看所有可用的客户端/用户。在这个视图中,我正在从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)这个代码实际上是正确的地方吗?我现在把它放在上面的路由处理程序中......因此它将紧跟在上面的代码之下。我认为根据MVC模式,这主要是正确的方式。我想我不想把这段代码放在Jade视图模板中?
Q2)我应该以什么形式保存这些数据,如何将它传递给Jade。我应该以某种方式将它添加到“docs” - 数据...即我从数据库中提取的数据。或者我应该把这个creationDate放在一个单独的数组中,我将它与原始的DB数据并排传递给jade。
我希望我的问题足够清楚!
答案 0 :(得分:1)
<强> Q1:强>
如果您的Mongoose查询完全取决于您的路线/superadmin
,那么这就是放置代码的正确位置。如果您在不同的路由或函数中使用相同的代码段,则可以将其包装在每个相关路径都可访问的函数中。但不要忘记包装req
,res
和其他必需的变量。在回调中进行计算,并仅使用Jade表示数据。
<强> Q2:强>
“保存”是什么意思?当您已经遍历每个文档进行计算和转换时,为每个文档创建一个额外的字段creationDate
,然后将docs
作为单个参数传递给Jade文件。