skip to Main Content
import express from 'express'
const app = express();
const port = process.env.PORT || 8000;

import mongoose from 'mongoose';

mongoose.connect("mongodb://localhost:27017/schooldb").then(() => {
    console.log("connection successfully ");
})
app.get('/', (req, res) => {
    res.send('Hello user')
})

app.listen(port, () => {
    console.log(`listening at port http://localhost:${port}`);
})

Hii i am new to learn express , i am trying to connect my mongodb to express js, i am not able to understand this error
D:LearnLearn Express new_mongoosenode_modulesmongooselibconnection.js:792
err = new ServerSelectionError();
^

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
at _handleConnectionErrors (D:LearnLearn Expressnew_mongoosenode_modulesmongooselibconnection.js:792:11)
at NativeConnection.openUri (D:LearnLearn Expressnew_mongoosenode_modulesmongooselibconnection.js:767:11)
at runNextTicks (node:internal/process/task_queues:60:5)
at listOnTimeout (node:internal/timers:533:9)
at process.processTimers (node:internal/timers:507:7) {
reason: TopologyDescription {
type: ‘Unknown’,
servers: Map(1) {
‘localhost:27017’ => ServerDescription {
address: ‘localhost:27017’,
type: ‘Unknown’,
hosts: [],
passives: [],
arbiters: [],
tags: {},
minWireVersion: 0,
maxWireVersion: 0,
roundTripTime: -1,
lastUpdateTime: 656213806,
lastWriteDate: 0,
error: MongoNetworkError: connect ECONNREFUSED ::1:27017
at connectionFailureError (D:LearnLearn Expressnew_mongoosenode_modulesmongodblibcmapconnect.js:370:20)
at Socket. (D:LearnLearn Expressnew_mongoosenode_modulesmongodblibcmapconnect.js:293:22)
at Object.onceWrapper (node:events:628:26)
at Socket.emit (node:events:513:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
cause: Error: connect ECONNREFUSED ::1:27017
at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1487:16) {
errno: -4078,
code: ‘ECONNREFUSED’,
syscall: ‘connect’,
address: ‘::1’,
port: 27017
},
[Symbol(errorLabels)]: Set(1) { ‘ResetPool’ }
},
topologyVersion: null,
setName: null,
setVersion: null,
electionId: null,
logicalSessionTimeoutMinutes: null,
primary: null,
me: null,
‘$clusterTime’: null
}
},
stale: false,
compatible: true,
heartbeatFrequencyMS: 10000,
localThresholdMS: 15,
setName: null,
maxElectionId: null,
maxSetVersion: null,
commonWireVersion: 0,
logicalSessionTimeoutMinutes: null
},
code: undefined
}

i was expecting connection successfull message at console,please help me

2

Answers


  1. here mongodb trying to connect to the current system but it fails to connect because the database is not running on the current system to fix this use 0.0.0.0 instead of localhost.

    mongoose.connect("mongodb://0.0.0.0:27017/schooldb").then(() => {
        console.log("connection successfully ");
    })
    
    Login or Signup to reply.
  2. In node.js v18, localhost uses ipv6 address (::1), and by default mongodb localhost doesn’t have ipv6 enabled. That’s why you’re facing this issue.

    If you want to use ipv4 localhost address (127.0.0.1),

    1. Either replace localhost with 127.0.0.1.
    mongoose.connect("mongodb://127.0.0.1:27017/schooldb").then(() => {
        console.log("connection successfully ");
    })
    
    1. OR use family: 4 parameter. This tells the node.js localhost to use ipv4 address.
    mongoose.connect("mongodb://localhost:27017/schooldb",{
        family: 4,
    }).then(() => {
        console.log("connection successfully ");
    })
    

    OR

    If you want to use the ipv6 address, then just start mongod with --ipv6 as argument. This enables mongodb ipv6 address.

    mongod --ipv6
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search