首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在本地主机上访问MongoDB

无法在本地主机上访问MongoDB
EN

Stack Overflow用户
提问于 2021-11-11 00:32:10
回答 1查看 1.9K关注 0票数 2

我正在尝试运行MongoDB in Node.js。我已经在C:\mongodb下面安装了社区服务器版本的MongoDB (v.5.0.3)。

在子文件夹"data“中,我创建了另一个文件夹"db",该文件夹当前为空。

当我在mongoDB中运行mongo.exe、Windows终端甚至Node.js终端时,一切似乎都正常。我可以查看我的数据库并创建新的数据库和集合。我还可以访问Compass中的数据库(connection ://localhost:27017)。

正如我所说的,我的"data/db“文件夹是空的,尽管我已经创建了一个新的数据库,因此我的数据库似乎存储在其他地方。这有问题吗?

在Node.js中,我正在尝试用猫鼬连接到MongoDB。我尝试了几种不同的方法,取得了不同的成功。此代码始终相同:

代码语言:javascript
复制
// Dependencies:
const express = require('express')
const app = express()
const mongoose = require('mongoose')

// Validate connection:
mongoose.connection.once('open', () => console.log('Connected do database'))
mongoose.connection.on('error', err => console.error('connection error:', err))

app.listen(5000, () => console.log('Server started'))

此URL工作(表面上):

代码语言:javascript
复制
// Connecting to database:
mongoose.connect('mongodb://127.0.0.1:27017/testdb', { useNewUrlParser: true })

在控制台中,我得到“服务器启动”和“连接到数据库”。

但是,YouTube教程中建议的这个URL不起作用:

代码语言:javascript
复制
// Connecting to database:
mongoose.connect('mongodb://localhost/testdb', { useNewUrlParser: true })

在控制台中,我得到了“服务器启动”,但没有“连接到数据库”。然后,半分钟后,应用程序崩溃,我得到以下错误消息(我已经审查了一些个人信息):

代码语言:javascript
复制
connection error: MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
    at NativeConnection.Connection.openUri (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\connection.js:797:32)
    at C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\index.js:330:10
    at C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
    at new Promise (<anonymous>)
    at promiseOrCallback (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
    at Mongoose._promiseOrCallback (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\index.js:1151:10)
    at Mongoose.connect (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\index.js:329:20)
    at Object.<anonymous> (C:\Users\xxx\Documents\xxx\xxx\xxx\app.js:13:10)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1147:10) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) { 'localhost:27017' => [ServerDescription] },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    logicalSessionTimeoutMinutes: undefined
  }
}
node:internal/process/promises:246
          triggerUncaughtException(err, true /* fromPromise */);
          ^

MongooseServerSelectionError: connect ECONNREFUSED ::1:27017
    at NativeConnection.Connection.openUri (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\connection.js:797:32)
    at C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\index.js:330:10
    at C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\helpers\promiseOrCallback.js:32:5
    at new Promise (<anonymous>)
    at promiseOrCallback (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\helpers\promiseOrCallback.js:31:10)
    at Mongoose._promiseOrCallback (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\index.js:1151:10)
    at Mongoose.connect (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongoose\lib\index.js:329:20)
    at Object.<anonymous> (C:\Users\xxx\Documents\xxx\xxx\xxx\app.js:13:10)
    at Module._compile (node:internal/modules/cjs/loader:1095:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1147:10) {
  reason: TopologyDescription {
    type: 'Unknown',
    servers: Map(1) {
      'localhost:27017' => ServerDescription {
        _hostAddress: HostAddress { isIPv6: false, host: 'localhost', port: 27017 },
        address: 'localhost:27017',
        type: 'Unknown',
        hosts: [],
        passives: [],
        arbiters: [],
        tags: {},
        minWireVersion: 0,
        maxWireVersion: 0,
        roundTripTime: -1,
        lastUpdateTime: 4303888,
        lastWriteDate: 0,
        error: MongoNetworkError: connect ECONNREFUSED ::1:27017
            at connectionFailureError (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongodb\lib\cmap\connect.js:293:20)
            at Socket.<anonymous> (C:\Users\xxx\Documents\xxx\xxx\xxx\node_modules\mongodb\lib\cmap\connect.js:267:22)
            at Object.onceWrapper (node:events:510:26)
            at Socket.emit (node:events:390:28)
            at emitErrorNT (node:internal/streams/destroy:164:8)
            at emitErrorCloseNT (node:internal/streams/destroy:129:3)
            at processTicksAndRejections (node:internal/process/task_queues:83:21)
      }
    },
    stale: false,
    compatible: true,
    heartbeatFrequencyMS: 10000,
    localThresholdMS: 15,
    logicalSessionTimeoutMinutes: undefined
  }
}

Node.js v17.0.1
[nodemon] app crashed - waiting for file changes before starting...

我的设置是否错误,因为我无法访问本地主机上的MongoDB?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-11 01:01:00

您的设置是正确的,但是localhost似乎要解决回循环网络设备::1的IPv6 IP,而不是IPv4地址(127.0.0.1)。默认情况下,MongoDB绑定到127.0.0.1地址,我相信这就是为什么不能使用::1地址到达它的原因。

这里有几个选项:继续使用127.0.0.1IP --为什么不呢? instead.

  • Change

  • 编辑mongodb配置,以便将localhost解析的内容绑定到::1

  • 。在linux中,您需要为此编辑/etc/hosts,不确定Windows.

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69921850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档