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 连接。它解决了这个问题。我不知道为什么会这样,但错误现在消失了。谢谢。
我正在尝试使用 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 连接。它解决了这个问题。我不知道为什么会这样,但错误现在消失了。谢谢。