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

问题描述 投票:0回答:3

每当我运行我的应用程序时。几秒钟后我收到错误消息。

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

这是我用来连接数据库的代码

const mongoose = require("mongoose");
const express = require("express")
const app = express()


app.use(express.static("views"))
app.use(express.json())
app.use(express.urlencoded({ extended: true }))


mongoose.set("strictQuery", false);
mongoose.connect("mongodb://localhost/newsletter", { useNewUrlParser: true });

const User = require("./User");
// app.use(User)


app.post("/addUser", (req, res, next) => {
    console.log("reqeuest recieved")
    console.log(req.body)

    const name = req.body.name;
    const email = req.body.email;
    saveUser(name, email)

    // Make the user go to the database here
    res.redirect("/")
    next()
})

app.post("/getEmails", (req, res, next) => {
    res.end("im getting emails")
    next()
})

async function saveUser(name, email) { 
    // before adding to the database, see if it already exists
    // if (await User.findOne( { name: name } )){
    //     console.log("not adding to the database")
    //     return;
    // }
    console.log("req recieved")
    const user = await User.create({
        name: name,
        email: email
    })
    await user.save()
    console.log(user);
}

app.listen(3000, () => {
    console.log("Listening")
})```

我连接到数据库后调用了架构。我尝试使用在命令提示符中键入 mongosh 获得的链接。这可行,但我想使用 loacl 主机。

node.js mongodb express mongoose
3个回答
1
投票

尝试连接:

mongoose
  .connect('mongodb://127.0.0.1:27017/newsletter', { useNewUrlParser: true })
  .catch((e) => {
    console.log(e);
    process.exit(0);
  });

此外,如果您使用

await user.save()
创建新实例,则无需调用
User.create()


0
投票

您必须指定端口

mongoose.connect("mongodb://localhost/newsletter", { useNewUrlParser: true });

喜欢:

mongoose.connect("mongodb://localhost:27017/newsletter", { useNewUrlParser: true });

您的客户端可能未连接到数据库


0
投票

我在使用 findOne() 时遇到了同样的错误。我在 github 操作的容器中运行 mongodb,但错误具有误导性。我通过输入错误的主机名和用户名/密码进行测试。这并没有改变错误消息。所以我得出的结论是我的主机名不正确。找到正确的主机名后,我立即收到身份验证错误,没有 10 秒的延迟。

© www.soinside.com 2019 - 2024. All rights reserved.