面临问题错误:“无法连接到 MongoDB Atlas 集群中的任何服务器”,同时添加 IP 地址并可从任何地方访问

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

我正在使用 nextjs 14 开发一个待办事项列表项目,当我创建该项目时,它运行良好。所有 CRUD 功能都运行良好。我是 nextJs 和后端工作的新手。现在我想再次处理我的项目,但无法连接到我的数据库。我正面临这个问题:

MongooseServerSelectionError:无法连接到 MongoDB Atlas 集群中的任何服务器。一个常见原因是您尝试从未列入白名单的 IP 访问数据库。确保您当前的 IP 地址位于 Atlas 集群的 IP 白名单中:https://www.mongodb.com/docs/atlas/security-whitelist/

我已在网络访问中删除并再次添加我的 IP 地址,并且我已允许从任何地方进行访问。但我仍然面临同样的问题,我尝试解决这个问题的所有方法都没有解决它

这是我的代码,以便您可以更好地了解我的问题:


-- db.js --

    import mongoose from 'mongoose';

    export const connect = async () => {
      try {
        mongoose.connect(process.env.MONGO_URI)

        mongoose.connection.on('connected', () => {
          console.log("Connected to database")
        })
      } catch (error) {
        console.log("Faileed to connect to database", error)
      }
    }

-- model.js --

    import mongoose from "mongoose";

    const TodoSchema = new mongoose.Schema({
      id: {
        type: String,
        required: true,
        unique: true
      },
      desc: {
        type: String,
        required: true
      },
      completed: {
        type: Boolean,
        default: false
      },
      category: {
        type: String,
        required: true
      },
      priority: {
        type: String,
        required: true
      }
    })

    const Todo = mongoose.models.todos || mongoose.model('todos', TodoSchema);

    export default Todo;

-- 路线.ts --

    import { NextRequest, NextResponse } from "next/server";
    import { connect } from "@/dbConfig/db";
    import Todo from "@/models/Todo";
    import { v4 as uuidv4 } from "uuid";

    connect();

    export const GET = async (request: NextRequest) => {
      try {
        const todos = await Todo.find({});
        console.log(todos);

        return NextResponse.json({
          msg: "Founded all todos",
          success: true,
          todos,
        });
      } catch (error) {
        console.error("Error fetching todos:", error)
        return NextResponse.json({ msg: `Issue happened, ${error}` }, { status: 500 });
      }
    };

    export const POST = async (request: NextRequest) => {
      try {
        const reqBody = await request.json();
        const { desc } = reqBody;
        console.log(desc);

        const newTodo = new Todo({
          id: uuidv4(),
          desc,
          completed: false,
        });

        const savedTodo = await newTodo.save();

        return NextResponse.json({
          msg: "Todo created",
          success: true,
          savedTodo,
        });
      } catch (error) {
        return NextResponse.json({ msg: "Issue happened" }, { status: 500 });
      }
    };

    export const DELETE = async (request: NextRequest) => {
      try {
        await Todo.deleteMany({})

        return NextResponse.json({
          msg: "Todos cleared",
          success: true,
        });
      } catch (error) {
        return NextResponse.json({ msg: "Issue happened" }, { status: 500 });
      }
    }`

我正在尝试访问我的数据库,并能够获取我的待办事项、编辑它们、清除它们或编辑它们

database mongodb mongoose next.js
1个回答
0
投票

解决方案

  • 更改您的网络:如果您使用的是公司网络或使用受限 Wi-Fi,请尝试切换到其他网络(例如家庭网络或移动热点)。这解决了我的问题。
© www.soinside.com 2019 - 2024. All rights reserved.