如何创建一个将在express.js中访问DB的全局函数

时间:2016-07-06 05:22:55

标签: javascript node.js express ejs

我使用express.js,mongodb,ejs。在导航栏中,有一个电子邮件图标,将显示新电子邮件的数量。

<%=newEmailCount%>

然后我需要将这个newEmailCount添加到每个路由。

Emails.count({userId: userId, new: true})

我的问题是在express.js中,如何添加可以由每个路由执行的全局函数?

1 个答案:

答案 0 :(得分:2)

如果您想获得每个GET请求的计数,那么您可以使用以下方法

router.get('*', function(req, res, next) {
  res.locals.newEmailCount = Emails.count({userId: userId, new: true})
  next();
})

您需要确保始终将其置于所有其他路线之上。

然后,您可以将res.locals.newEmailCount传递给渲染功能,该功能会为匹配的路线呈现HTML文件。

这也适用于应用程序实例级路由处理,如果这就是你正在使用的那些。