首页 > 解决方案 > 动态地将 dbName 传递给 mongoose.connect

问题描述

对于 MEAN 应用程序,我需要根据登录用户传递 dbName。事件流程如下。

  1. 用户登录并使用身份验证特定的 REST-API 进行身份验证。
  2. Auth-API 将包含 userSpecificDbName 的用户帐户数据返回给 Angular。
  3. 此后,Angular 对应用程序的主要 REST-API 进行所有调用。对于 API 的所有调用,都会传递帐户数据,并且 API shd 使用 app.js 的以下语句中帐户数据中的 dbName
mongoose.connect(uri, { dbName: <userSpecificDbName> })
  .then( () => {
    console.log('Connection to the Atlas Cluster is successful!')
  })
  .catch( (err) => console.error(err));

这可能吗?为此,我如何在 app.js 中传递数据?

标签: node.jsangularmongoose

解决方案


当然可以这样做,但请记住,您需要根据请求打开和关闭连接才能做到这一点,这不是 Node.js 中的常规模式通常您会连接到数据库一次然后触发查询。但是在您的情况下,每次发送响应并重新连接并开始连接数据库后,您都会断开连接。

或者,您很可能按照以下答案中的建议进行 useDb 调用:

用猫鼬切换数据库

这将帮助您切换数据库。


推荐阅读