“错误:MongooseError:操作 `users.insertOne()` 缓冲在 10000 毫秒后超时”,

Cli*_*ang 6 mongodb node.js express

我在 node express 上运行 mondoDB Atlas,当我与邮递员进行测试时出现此错误。

const express = require('express');
const cors = require('cors');
const mongoose = require('mongoose');

require('dotenv').config();

const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

const uri = process.env.ATLAS_URI;
mongoose.connect(uri, { useNewUrlParser: true, useCreateIndex: true }
);
const connection = mongoose.connection;
connection.once('open', () => {
  console.log("MongoDB database connection established successfully");
})

const exercisesRouter = require('./routes/exercises');
const usersRouter = require('./routes/users');

app.use('/exercises', exercisesRouter);
app.use('/users', usersRouter);

app.listen(port, () => {
    console.log(`Server is running on port: ${port}`);
});
Run Code Online (Sandbox Code Playgroud)

这是我的 .env,我猜这个问题也可能在这里,请帮忙

ATLAS_URI=mongodb+srv://userone:useronepassword1234@cluster0.swye5.mongodb.net/<dbname>?retryWrites=true&w=majority
Run Code Online (Sandbox Code Playgroud)

小智 17

就我而言,我必须前往 Atlas,并将列入白名单的 IP 重置为正确的地址。

然后我重新启动了本地服务器并尝试在邮递员上再次发帖...并且成功了!


小智 5

  1. 首先替换<dbname>为您的实际数据库名称,如果没有创建,请创建一个。

  2. 然后根据需要在 Atlas UI 本身上创建集合。

  3. 在网络访问中,单击添加 IP 地址并选择“允许从任何地方访问”。

  4. 像这样重写你的代码:

mongoose 
 .connect(process.env.MONGO_PROD_URI, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,   })   
 .then(() => console.log("Database connected!"))
 .catch(err => console.log(err));
Run Code Online (Sandbox Code Playgroud)
  1. 现在您的数据库应该已连接并且工作正常。

如果仍未解决,请检查此链接