MongooseError: Operation `tweets.insertOne()` buffering timed out after 10000ms

MongooseError: Operation `tweets.insertOne()` buffering timed out after 10000ms

我正在尝试使用 mongodb 和 express 制作一个简单的 CRUD 应用程序,但是当我制作创建方法时,我一直收到此错误,我已经尝试了所有方法。更改 DNS 服务器,我什至将数据库访问设置为允许从任何地方访问。但似乎还是不行。

对于互联网,我在 phone 上使用来自数据蜂窝的热点网络共享来连接到互联网。

服务器可以 运行 但是当我尝试使用 postman 发送一些 post 请求到 http://localhost:5000/v1/api/tweets/ 它不是仅发送任何响应错误

这是代码。

主要 - index.js

const express = require('express')
const dotenv = require('dotenv').config()
const mongoose = require('mongoose')

const router = require('./routes')
//const { connectToDb } = require('./config/db')

const app = express()
app.use(express.json())
app.use(express.urlencoded());

app.use((req, res, next) => { //set headers
    res.setHeader('Access-Control-Allow-Origin','*')
    res.setHeader('Access-Control-Allow-Methods','POST, GET, PUT, DELETE, OPTIONS')
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type')
    next();
})

app.use('/v1/api/', router )

mongoose.connect(process.env.MONGO_URI, { useNewUrlParser: true, useUnifiedTopology: true })
.then(app.listen(process.env.PORT, ()=>{ console.log(`Server is listening on port ${process.env.PORT}`)}))
.catch(err => console.log(err))

主路由器

const router = require("express").Router()
const tweets = require('./tweets')

router.use('/tweets', tweets)

module.exports = router

tweets 路由器

const router = require('express').Router()
const { tweet } = require('../controllers')

router
.post('/', tweet.createTweet)


module.exports = router

推文控制器

const Tweet = require('../schemas/TweetSchema')

module.exports = {
    createTweet : (req, res, next) => {
        const author = req.body.author
        const text = req.body.text

        const Tweets = new Tweet({
            author,
            text
        })

        Tweets.save()
        .then(result => {
            res.status(201).json({
                desc: 'success'
            })
            next()
        })
        .catch((err)=>console.log(err))

        
    },
}

推文架构

const mongoose = require('mongoose')
const Schema = mongoose.Schema
const TweetSchema = new Schema({
    author: {
        type: String,
        required: true
    },
    text: {
        type: String, 
        required: true
    }
},{
    timestamps: true
})

module.exports = mongoose.model("Tweet", TweetSchema)

错误信息

MongooseError: Operation `tweets.insertOne()` buffering timed out after 10000ms
    at Timeout.<anonymous> (/mnt/d/Programming/Web Development/twimern/server/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:149:23)
    at listOnTimeout (node:internal/timers:557:17)
    at processTimers (node:internal/timers:500:7)
Error: queryTxt ETIMEOUT twimern.xdzes.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (node:dns:213:19) {
  errno: undefined,
  code: 'ETIMEOUT',
  syscall: 'queryTxt',
  hostname: 'twimern.xdzes.mongodb.net'
}

谢谢,如果代码很难阅读,我很抱歉。希望你能帮帮我。

更新: 我将我的互联网从使用 phone 的热点网络共享更改为普通的 WiFi 连接。它解决了这个问题。我不知道为什么会这样,但错误现在消失了。谢谢。