Вопрос:

Подключение к атласу mongodb и локальному хосту

node.js mongoose mongodb-atlas

24 просмотра

2 ответа

3 Репутация автора

Я развернул свой проект nodejs в Heroku и использовал URL-адрес кластера mongodb, но я также хочу работать на своей локальной машине и использовать локальный хост.

Я попытался написать этот код, когда он не подключается к кластеру, он должен подключаться к локальному хосту, но проблема в том, что URL-адрес атласа не возвращает «undefined», когда он не подключен. местный хозяин.

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};
Автор: shivanshuchourasia Источник Размещён: 25.07.2019 04:59

Ответы (2)


0 плюса

16 Репутация автора

Вы пытались соединить их отдельно? Насколько я понимаю, вы хотите соединить их обоих одновременно. Попробуй это:

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, чтобы увидеть, что возвращает атлас, если соединение не установлено. И добавьте оператор if, чтобы проверить, установлено соединение или нет.

Автор: burakarslan Размещён: 25.07.2019 07:02

0 плюса

36 Репутация автора

Решение

Внутри кода есть строка:

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

Переменная mlabDBне возвращает undefined, потому что вы определяете mlabDB как:

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

В этом случае, если process.env.MLAB_USERNAMEне определено, строка вернет:

mongodb+srv://undefined

В ответ на ваш вопрос: «Как мне соединиться как с кластером атласа, так и с локальным хостом?»: Используйте троичный оператор 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, смотрите здесь .

Для локального управления vars используйте пакет noten's dotenv.

Автор: Elisha Kramer Размещён: 26.07.2019 09:27
Вопросы из категории :
32x32