如何创建将在 express.js 中访问数据库的全局函数

How to create a global function which will access DB in express.js

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

<%=newEmailCount%>

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

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

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

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

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

您需要通过将其置于所有其他路由之上来确保它始终被执行。

然后您可以将 res.locals.newEmailCount 传递给您的渲染函数,该函数会为匹配的路由渲染 HTML 文件。

如果您使用的是应用程序实例级路由处理,这也适用。