невозможно подключиться к атласу mongodb с помощью mongoose - PullRequest
0 голосов
/ 23 февраля 2020

мне нужна помощь !!! Я попытался подключиться к атласу mongodb с помощью строки подключения, но не смог. Я не уверен, как поступить. У меня есть приложение Barebones. Я получаю сообщение об ошибке соединения (mongooseServerSelectionError) и необработанное предупреждение об отклонении обещания.

Вот ошибка:

 connection error:  MongooseError [MongooseServerSelectionError]: connect ECONNREFUSED 127.0.0.1:27017
   at new MongooseServerSelectionError (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/error/serverSelection.js:22:11)
   at NativeConnection.Connection.openUri (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/connection.js:808:32)
   at Mongoose.connect (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/index.js:333:15)
   at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/db/index.js:4:10)
   at Module._compile (internal/modules/cjs/loader.js:1157:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
   at Module.load (internal/modules/cjs/loader.js:1001:32)
   at Function.Module._load (internal/modules/cjs/loader.js:900:14)
   at Module.require (internal/modules/cjs/loader.js:1043:19)
   at require (internal/modules/cjs/helpers.js:77:18)
   at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/bin.js:33:10)
   at Module._compile (internal/modules/cjs/loader.js:1157:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
   at Module.load (internal/modules/cjs/loader.js:1001:32)
   at Function.Module._load (internal/modules/cjs/loader.js:900:14)
   at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12) {
 message: 'connect ECONNREFUSED 127.0.0.1:27017',
 name: 'MongooseServerSelectionError',
 reason: TopologyDescription {
   type: 'Single',
   setName: null,
   maxSetVersion: null,
   maxElectionId: null,
   servers: Map { 'localhost:27017' => [ServerDescription] },
   stale: false,
   compatible: true,
   compatibilityError: null,
   logicalSessionTimeoutMinutes: null,
   heartbeatFrequencyMS: 10000,
   localThresholdMS: 15,
   commonWireVersion: null
 },
 [Symbol(mongoErrorContextSymbol)]: {}
}
(node:9182) UnhandledPromiseRejectionWarning: MongooseServerSelectionError: connect ECONNREFUSED 127.0.0.1:27017
   at new MongooseServerSelectionError (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/error/serverSelection.js:22:11)
   at NativeConnection.Connection.openUri (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/connection.js:808:32)
   at Mongoose.connect (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/node_modules/mongoose/lib/index.js:333:15)
   at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/db/index.js:4:10)
   at Module._compile (internal/modules/cjs/loader.js:1157:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
   at Module.load (internal/modules/cjs/loader.js:1001:32)
   at Function.Module._load (internal/modules/cjs/loader.js:900:14)
   at Module.require (internal/modules/cjs/loader.js:1043:19)
   at require (internal/modules/cjs/helpers.js:77:18)
   at Object.<anonymous> (/Users/jagnoorg/Documents/personal-projects/monkey-den/project2/server/bin.js:33:10)
   at Module._compile (internal/modules/cjs/loader.js:1157:30)
   at Object.Module._extensions..js (internal/modules/cjs/loader.js:1177:10)
   at Module.load (internal/modules/cjs/loader.js:1001:32)
   at Function.Module._load (internal/modules/cjs/loader.js:900:14)
   at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)
(node:9182) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:9182) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

Вот мой код:

Я даю указания, к которым подключаться к URI, установить соединение через mon goose , экспортируйте базу данных и откройте соединение в приложении. js ...

внутри дБ / индекс. js:

var mongoose = require('mongoose');
mongoose.Promise = global.Promise;
// const uri = require('../../keys.js').mongodb.dbURI;
mongoose.connect("mongodb://localhost/test", { useNewUrlParser: true, useUnifiedTopology: true});
// mongoose.connect(process.env.MONGODB_URL || uri, { useNewUrlParser: true, useUnifiedTopology: true});
var db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error: "));

module.exports = db;

Внутри приложение. js:

console.log('NODE_ENV :::', process.env.NODE_ENV);
if (process.env.NODE_ENV === 'PRODUCTION') {
    var app = require('./prod.app.js'); 
} else {
    var app = require('./dev.app.js');
}
var express = require('express');
var path = require('path');
var routes = require('./db/routes/index.js');
var http = require('http');
var favicon = require('serve-favicon');
var PORT = 3000;

/* 
 * shared code in production and development 
*/

// favicon - 3 ways - middleware, static, html 
app.use(favicon(path.join(__dirname, '../public/images/favicon.ico')));
// app.use('/favicon.ico', express.static(path.join(__dirname, '../public/images/favicon.ico')));
// app.use('images/favicon.ico', express.static(path.join(__dirname, '../public/images/favicon.ico')));

app.use(express.json());
app.use(express.urlencoded({ extended: true}));

// static files
app.use(express.static(path.join(__dirname, "../client")));
app.use(express.static(path.join(__dirname, "../public")));

// db - mongo
var db = require('./db/index.js');
db.once("open", function (err) {
    // console.log('db::: ', db);
    if (err) {
        return console.error(err);
    } else {
        console.log("Successfully connected to mongodb");
    }
})

// routes
app.use(routes); 

// serve index.html if can't find the route
app.use('*', function (req, res, next) {
    console.log("...serving index.html file from the public folder")
    res.sendFile(path.join(__dirname, '../public/index.html'));
});

// create server 
var server = http.createServer(app);
server.listen(PORT);
console.log(`server listening on post ${PORT}`);

спасибо, что изучили это для меня

Ответы [ 8 ]

4 голосов
/ 01 марта 2020

У вас была эта строка в вашем приложении. js app.use(cors())?

Попробуйте удалить эту строку и удалить все, что связано с cors.

Если это не сработает, проверьте белый список IP-адресов в сетевом доступе в MongoDB Atlas и добавьте свой текущий IP-адрес или напишите этот 0.0.0.0/0, чтобы разрешить все IP-адреса.

2 голосов
/ 01 марта 2020

проверьте, что ваш IP включен в атласе mongodb. Вы должны предоставить доступ к IP-адресу вашего компьютера из атласа mongodb. go для доступа к сети (левая боковая панель) введите свой IP-адрес или введите 0.0.0.0 для доступа ко всем IP-адресам.

1 голос
/ 04 марта 2020

установите текущий IP-адрес как 0.0.0.0/0 в mongoDB ATLAS в IP-адресе подключения. Это позволит подключить все IP-адреса.

1 голос
/ 23 февраля 2020

Попробуйте добавить URL-адрес, предоставленный Atlas для подключения вашего приложения:

mongoose.connect("<URLprovidedByAtlas>", { useNewUrlParser: true, useUnifiedTopology: true});
0 голосов
/ 25 апреля 2020

Это сработало для меня. Сначала я изменил IP-адрес на 0.0.0.0/0 и удалил app.use (cores ()). Затем я скачал компас mongoDB и подключился к базе данных. После этого тот же URI использовался в индексе. js. Существует разница при вводе пароля в URI и компасе. В компасе вам не нужно кодировать пароль (если у вас есть специальные символы). Если вы подключаетесь по компасу и вставляете эту ссылку в индекс. js вам не нужно кодировать пароль.

0 голосов
/ 09 марта 2020

Попробуйте проверить соединение inte rnet и правильно ли указан ваш IP-адрес.

https://github.com/Automattic/mongoose/issues/8180#issuecomment -552161146

0 голосов
/ 03 марта 2020

bro обновить адрес (ip) в mongodb atlus.IT ПОМОЖЕТ ВАМ

0 голосов
/ 27 февраля 2020

Проверьте, запустили ли вы базу данных в терминале ./mongod

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...