【问题标题】:Connection to both mongodb atlas cluster and the local host连接到 mongodb atlas 集群和本地主机
【发布时间】:2019-12-03 07:08:59
【问题描述】:

我已经将我的 nodejs 项目部署到 Heroku 并使用了 mongodb 集群 url,但我也想在本地机器上工作并使用本地主机。

我尝试编写这段代码,当它不连接到集群时,它应该连接到本地主机,但问题是 atlas url 在未连接时不返回“未定义”。那么如何同时连接atlas 集群和本地主机。

var mongoose = require('mongoose');

mongoose.Promise = global.Promise;

require('dotenv').config();

const mlabDB = `mongodb+srv://${process.env.MLAB_USERNAME}:${process.env.MLAB_PASSWORD}@todo-app-qhj7g.mongodb.net/test?retryWrites=true&w=majority`;

mongoose.connect(mlabDB || 'mongodb://localhost:27017/TodoApp', {useNewUrlParser: true})
  .catch((e) => {
    console.log(e);
  });

module.exports = {mongoose};

【问题讨论】:

    标签: node.js mongoose mongodb-atlas


    【解决方案1】:

    在代码中,有一行:

    mlabDB || 'mongodb://localhost:27017/TodoApp'
    

    变量mlabDB 没有返回未定义,因为您将 mlabDB 定义为:

    const mlabDB = `mongodb+srv://${process.env.MLAB_USERNAME}...
    

    在这种情况下,如果 process.env.MLAB_USERNAME 未定义,则字符串将返回:

    mongodb+srv://undefined
    

    回答您的问题:“我如何同时连接 atlas 集群和本地主机?”:使用 JavaScript 三元运算符:

    const mlabDB = process.env.MLAB_USERNAME ? `mongodb+srv://${process.env.MLAB_USERNAME}:${process.env.MLAB_PASSWORD}@todo-app-qhj7g.mongodb.net/test?retryWrites=true&w=majority` : ``;
    

    有关Heroku Config Vars, see here的更多信息。

    对于本地 vars 管理,使用 npm 的 dotenv 包。

    【讨论】:

      【解决方案2】:

      您是否尝试过单独连接它们?据我了解,您想同时连接它们。试试这个:

      mongoose.connect(mlabDB , {useNewUrlParser: true})
        .catch((e) => {
          console.log(e);
        });
      

      使用 atlas 完成所有操作后,再为您自己的数据库做任何事情。是的,您必须分别连接它们并进行处理。

      mongoose.connect('mongodb://localhost:27017/TodoApp' , {useNewUrlParser: true})
            .catch((e) => {
              console.log(e);
            });
      

      如果您想在无法连接 atlas 的情况下连接自己的数据库。如果没有发生连接,使用 console.log 查看 atlas 返回的内容。并添加一个 if 语句来检查连接是否发生。

      【讨论】:

        猜你喜欢
        • 2018-03-05
        • 1970-01-01
        • 2019-06-10
        • 2020-01-15
        • 2017-12-12
        • 1970-01-01
        • 2021-04-29
        • 2021-03-09
        • 2019-12-30
        相关资源
        最近更新 更多