连接到 mongodb atlas 集群和本地主机

Connection to both mongodb atlas cluster and the local host

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

我尝试编写这段代码,因为当它没有连接到集群时,它应该连接到本地主机,但问题是图集 url 没有 return 'undefined' 没有的时候 connected.So 如何连接 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};

你试过分别连接它们吗?据我了解,您想同时连接它们。试试这个:

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

在你用 atlas 完成所有需要的事情之后,再为你自己的数据库做所有事情。是的,您必须分别连接它们并进行处理。

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

如果图集连接不上,想连接自己的数据库。使用console.log查看什么图集returns如果没有发生连接。并添加一个 if 语句来检查连接是否发生。

在代码中,有一行:

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

变量 mlabDB 不是 return 未定义的,因为您将 mlabDB 定义为:

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

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

mongodb+srv://undefined

回答您的问题:"how do I connect with both the atlas cluster and the local host?":使用 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` : ``;

有关 的更多信息。

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