Необработанный отказ от обещания: ошибка: URL неверен, не может быть проанализирован - PullRequest
0 голосов
/ 29 мая 2018

Я новичок в aws и mongodb в одно и то же время, поэтому застрял на самом базовом этапе при попытке подключиться к моей базе данных mongo, размещенной на экземпляре amazon linux ec2.Причина в том, что я не могу построить путь к своей базе данных.

Вот то, что я пытаюсь использовать: mongoose.connect('mongod://ec2-user@ec2-XX-XX-XXX-XXX-XX.compute-1.amazonaws.com:27017/test' ).

И вот результат моегоПроверка лямбда-функции: UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: URL malformed, cannot be parsed

Я использую mongodb 3.6.5.

Ответы [ 5 ]

0 голосов
/ 11 февраля 2019

В моем случае ниже работает нормально.

Внутри db.js

const mongoose = require('mongoose');
const MONGODB_URI = "mongodb://host-name:27017/db-name?authSource=admin";
const MONGODB_USER = "mongouser";
const MONGODB_PASS = "myasri*$atIP38:nG*#o";

const authData =  {
    "user": MONGODB_USER,
    "pass": MONGODB_PASS,
    "useNewUrlParser": true,
    "useCreateIndex": true
}; 
mongoose.connect(
    MONGODB_URI, 
    authData,
    (err) => {
        if (!err) { console.log('MongoDB connection succeeded.'); }
        else { console.log('Error in MongoDB connection : ' + JSON.stringify(err, undefined, 2)); }
    }
);

Примечание:

Версия моего узла равна 10.x

Версия сервера MongoDb - 3.6.3

Версия mongoose - ^ 5.1.2

0 голосов
/ 29 декабря 2018

Если вы использовали следующий URI в файле среды, например MongoDB://<dbuser>:<dbpassword>@ds055915.mlab.com:55915/fullstack-vue-graphql Убедитесь, что ваш пароль в MONGOD_URI не имеет специального символа, например @.Я использовал @ как часть моего пароля и получал ошибку.После того, как я удалил специальные символы из моего DB Password, все заработало как положено.

0 голосов
/ 30 мая 2018

Моя проблема была более простой проблемой URI.Поскольку в адресе mongod был символ @.

Я должен был использовать это:

return mongoose.connect(encodeURI(process.env.DB_CONNECT)
0 голосов
/ 08 августа 2018

Я просто хочу обновить ответ от @ anthony-winzlet, потому что у меня та же ошибка, и я решил с этим кодом.

mongoose.connect(url, {
  auth: {
    user:'usrkoperasi',
    password:'password'
  },
  useNewUrlParser:true
}, function(err, client) {
  if (err) {
    console.log(err);
  }
  console.log('connect!!!');
});

Я просто добавляю обратный вызов и useNewUrlParser:true.Я использую "mongoose": "^5.2.7",.

Удачного кодирования!

0 голосов
/ 29 мая 2018

Mongoose 5.x поддерживает следующий синтаксис для авторизации, а также убедитесь, что вы не использовали какой-либо специальный символ в URL, например @,-,+,>

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  }
})

Или если вы хотите удалитьпредупреждение о запрете Избегайте «устарел текущий анализатор строк URL»

Добавить параметр useNewUrlParser

mongoose.connect(MONGO_URL, {
  auth: {
    user: MONGO_DB_USER,
    password: MONGO_DB_PASSWORD
  },
  { useNewUrlParser: true }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...