Answer a question

i need help!!! I tried connecting to mongodb atlas with my connection string but I'm unable to. I'm not sure how to proceed. i have a barebones application. I'm getting a connection error (a mongooseServerSelectionError) and an unhandled Promise Rejection Warning.

Here is the error:

 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.

Here is my code:

i give directions for which uri to connect to, set up the connection through mongoose, export the db and open the connection in app.js...

inside db/index.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;

Inside app.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}`);

thank you for looking into this for me

Answers

check your IP is enabled by mongodb atlas. you should give access to your computer IP address from mongodb atlas. go to the network access (left side bar) enter your IP or enter 0.0.0.0 to access all IP.

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐