【问题标题】:nodejs cant connect to mongodb using mongoosenodejs无法使用猫鼬连接到mongodb
【发布时间】:2020-04-03 04:59:45
【问题描述】:

所以我所有的应用程序在使用 mongoose 时都可以正常工作,突然间它们都停止了。我无法连接到我的数据库。但是我使用猫鼬数据库部署的应用程序工作正常,但我无法使用本地计算机访问任何数据库。这是我编写的测试服务器。有人可以帮我看看发生了什么。

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser')

const app = express();

app.use(express.json())

const db = require('./keys').mongoURI;

mongoose.connect(db, { useNewUrlParser: true, useUnifiedTopology: true })
    .then(() => console.log('connected'))
    .catch(err => console.log(err))

const port = process.env.PORT || 5000;

app.listen(port, () => console.log('server running'))



module.exports = {
    mongoURI: 'mongodb+srv://ertemishakk:<password>@cluster0-xi4zx.mongodb.net/test?retryWrites=true&w=majority'
}

终端: 服务器运行 MongoTimeoutError:服务器选择在 30000 毫秒后超时 在 Timeout._onTimeout (/Users/ishakertem/Desktop/test/node_modules/mongodb/lib/core/sdam/server_selection.js:308:9) 在 listOnTimeout (internal/timers.js:536:17) 在 processTimers (internal/timers.js:480:7) { 名称:'MongoTimeoutError', }

【问题讨论】:

  • mongo是否在指定Instance上运行??\
  • 我杀死了所有节点,所以没有运行
  • 你是说mongo没有运行??那么它将如何连接??
  • mongo 正在运行,已安装
  • 你是否能ping通那个mongo实例??还要检查 mongo.conf 中的 bindIP 属性。

标签: node.js mongodb express mongoose mern


【解决方案1】:

您可以遵循此代码希望能解决您的问题

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser')

const app = express();

app.use(express.json())


//Remove <password> and provide DB password
/**
 * Example: mongodb + srv: //ertemishakk:123@cluster0-xi4zx.mongodb.net/test?retryWrites=true&w=majorit
 */
mongoose.connect('mongodb+srv://ertemishakk:<password>@cluster0-xi4zx.mongodb.net/test?retryWrites=true&w=majorit', {
        useNewUrlParser: true,
        useUnifiedTopology: true
    })
    .then(() => console.log('connected'))
    .catch(err => console.log(err))

const port = process.env.PORT || 5000;

app.listen(port, () => console.log('server running'))

【讨论】:

    【解决方案2】:

    你应该检查你的

    bindIp : [public_ip]

    选项

    mongod.conf

    文件。 应该指出运行 MongoDB 的系统的公共 IP。 您只能使用 0.0.0.0 进行调试,因为它是暴露的 One。

    [如果对您有帮助,请投票给这个答案]

    【讨论】:

    • 我的本地服务器上没有 mongb,使用 node 访问云
    • 您是否尝试过将 publicIP 放在 bindIp 选项中? [配置更新后还需要重启mongodb]
    • 我不知道如何在 bindIP 选项中访问 publicIP。据我所知,它们只存在于我不使用的本地 mongodb 中。我使用云库
    猜你喜欢
    • 1970-01-01
    • 2016-04-29
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2022-12-11
    • 1970-01-01
    相关资源
    最近更新 更多